《数据科学面试40+真题讲解》,K神本年度最后一次开课


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 1048|回复: 6
收起左侧

问一道airbnb面经: rectangle intersection

[复制链接] |试试Instant~ |关注本帖
dnlby96 发表于 2017-9-16 10:03:24 | 显示全部楼层 |阅读模式

2017(7-9月) 码农类 硕士 实习@Airbnb - 内推 - 技术电面 在线笔试 |Otherfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
                                                                                                                                                问一道A家面经题:
[size=12.000000pt]             You have a plain with lots of rectangles on it, find out how many of themintersect.  . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
[size=12.000000pt]. From 1point 3acres bbs

[size=12.000000pt]这题里的rectangles是either horizontal or vertical 的吗, 如果不是,input如何定义rectangle在这个plain上的角度和位置?
[size=12.000000pt]input给的是每个rectangle 的upper left和lower right的vertices吗?
[size=12.000000pt]谢谢~
                               
                       
               



补充内容 (2017-9-16 10:04):
请原谅那些个每段话前面的奇怪的prefix.... 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
补充内容 (2017-9-16 20:51):
还有就是intersect with what? 如果 A 和 B intersect,B 和 C intersect,然后 A 和 C 不 intersect,那我要return 2 还是 3?
 楼主| dnlby96 发表于 2017-9-16 20:51:23 | 显示全部楼层
还有就是intersect with what? 如果 A 和 B intersect,B 和 C intersect,然后 A 和 C 不 intersect,那我要return 2 还是 3?
回复 支持 反对

使用道具 举报

Hellcat 发表于 2017-9-17 00:10:19 | 显示全部楼层
我有个初步的想法:
假设矩形的边都是水平或垂直的,每个矩形通过左上点 以及长宽来表示.鐣欏璁哄潧-涓浜-涓夊垎鍦
首先把左上点按y坐标排序,如果y坐标相同就按x坐标排,你可以得到一个array
考虑array中第j个元素(j > 1),根据左上点的坐标(x0,y0)以及宽高,可以得到左下点的坐标(x0,y1)
由于array已经按照y排序了,你可以查找到(x0,y1)在array中的位置,设为i。所以j之前能与j相交的矩形只能是(i,j)之间且最右端的横坐标大于x0的矩形。但是想到这想不下去了,我不知道有哪个数据结构可以在O(1)做到给定范围[i,j],在数组中找到[i,j]中大于值val的元素个数。如果有的话,就可以总时间复杂度O(nlogn)
回复 支持 反对

使用道具 举报

strisunshine 发表于 2017-9-17 10:07:30 | 显示全部楼层
Hellcat 发表于 2017-9-17 00:10
我有个初步的想法:
假设矩形的边都是水平或垂直的,每个矩形通过左上点 以及长宽来表示
首先把左上点按y ...

这里不光要最右端的横坐标大于x0吧, 最左端的横坐标还要小于x1才行, 每个都查验又需要更多的时间复杂度
就你考虑的那种情况来说, 如果是array, 用值作二分查找即可, 然后用index相减可求出大于val的个数, 时间复杂度为O(nlogn), 没有超过之前排序的时间复杂度
回复 支持 反对

使用道具 举报

nagisafight 发表于 2017-10-3 17:40:33 | 显示全部楼层
我猜是不是只要相交就+1,然后我感觉用unionfind挺好做的
回复 支持 反对

使用道具 举报

velinforever 发表于 2017-10-10 14:23:15 | 显示全部楼层
请问这个是电面的题么?
回复 支持 反对

使用道具 举报

Stanley Z 发表于 2017-10-11 22:19:44 | 显示全部楼层
strisunshine 发表于 2017-9-17 10:07
这里不光要最右端的横坐标大于x0吧, 最左端的横坐标还要小于x1才行, 每个都查验又需要更多的时间复杂度 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
...
. 1point3acres.com/bbs
O(nlogn) 不能保证吧, 比如按照x坐标排序,对于i元素,二分查找到i之后所有x0坐标 小于 i.x1的矩形,这时候只能确保在x轴方向这些矩形重合了,还要一一检查所有y方向是否重合,最后还是线性复杂组,worst case O(n^2), 比如有n个矩阵,左上角右下角坐标分别是(k,k), (2n-k, 2n-k) k = 1,2,.... n-1
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-11-23 08:19

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表