一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1213|回复: 13
收起左侧

Snapchat 雷达探测小车题

[复制链接] |试试Instant~ |关注本帖
cdefgh3000 发表于 2016-10-20 04:48:41 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 本科 全职@Snapchat - 内推 - Onsite |Otherfresh grad应届毕业生

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

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

x
[size=14.6667px]想问一下大家snapchat有一个雷达探测小车的问题
路两边可以想象为 y = 0 和y = 1两条直线。现在给你list of radar,每个雷达为(横坐标,纵坐标,辐射半径)。问你一辆车能否通过这条路。
这个有什么解法
linweihua0 发表于 2016-10-20 10:35:21 | 显示全部楼层
union find + sweep line吧 虽然还是O(n^2)
回复 支持 反对

使用道具 举报

 楼主| cdefgh3000 发表于 2016-10-20 11:51:54 | 显示全部楼层
linweihua0 发表于 2016-10-20 10:35
union find + sweep line吧 虽然还是O(n^2)

. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴能不能具体说一下,雷达是圆吧,不清楚怎么用line可以做.鏈枃鍘熷垱鑷1point3acres璁哄潧
回复 支持 反对

使用道具 举报

linweihua0 发表于 2016-10-20 15:04:07 | 显示全部楼层
你可以看看sweeping line algorithm 就是把圆分成左右event
回复 支持 反对

使用道具 举报

fred0329 发表于 2016-11-1 02:54:09 | 显示全部楼层
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
. 鍥磋鎴戜滑@1point 3 acres
补充内容 (2016-11-1 02:56):.鏈枃鍘熷垱鑷1point3acres璁哄潧
union find
回复 支持 反对

使用道具 举报

南慕伦 发表于 2016-11-1 03:10:26 | 显示全部楼层
一共n个雷达,初始化为n个集合,每个集合有上界下界两个属性,雷达之间两两比较是否相交,相交的相应集合合并,并且更新上下界。
最后检查是否存在集合上下界完全遮蔽[-1,+1]
回复 支持 反对

使用道具 举报

oldfish 发表于 2016-11-1 12:13:52 | 显示全部楼层
linweihua0 发表于 2016-10-20 10:35
union find + sweep line吧 虽然还是O(n^2)

直觉上应该有 nlogn 的方法 但是想不出来...
回复 支持 反对

使用道具 举报

南慕伦 发表于 2016-11-1 13:07:04 | 显示全部楼层
oldfish 发表于 2016-11-1 12:13
直觉上应该有 nlogn 的方法 但是想不出来...

感觉不太可能。二维圆相交应该不可能有nlogn的解法。
回复 支持 反对

使用道具 举报

z026 发表于 2016-11-3 03:30:42 | 显示全部楼层
根据雷达x坐标排序,这样是nlgn。
回复 支持 反对

使用道具 举报

z026 发表于 2016-11-3 03:34:43 | 显示全部楼层
(抱歉一个回车就发出去了。。。)

然后顺序查看过去,如下:

for i in 1 .. n:
    if (dis between radar[i].center and radar[i-1].center) <= radar[i].radius + radar[i-1].radius):. from: 1point3acres.com/bbs
        if no space between radar[i] and wall and no space between radar[i-1] and wall:
            return false. Waral 鍗氬鏈夋洿澶氭枃绔,
return true

这样可行?
回复 支持 反对

使用道具 举报

AirCapital 发表于 2016-11-3 04:13:21 | 显示全部楼层
z026 发表于 2016-11-3 03:34
(抱歉一个回车就发出去了。。。)

然后顺序查看过去,如下:

我怎么觉得应该是根据centroid - radius 来排序,即根据左侧的起点?
回复 支持 反对

使用道具 举报

z026 发表于 2016-11-3 05:36:52 | 显示全部楼层
AirCapital 发表于 2016-11-3 04:13
我怎么觉得应该是根据centroid - radius 来排序,即根据左侧的起点?
.鐣欏璁哄潧-涓浜-涓夊垎鍦
不太清楚题目是什么要求,如果车是一个点那么这样的解法应该可以行。如果车也有体积那就比较麻烦了。
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
如果这样可行,sort O(nlgn) + iteration O(n)应该可行。具体要看题目了
回复 支持 反对

使用道具 举报

南慕伦 发表于 2016-11-3 06:10:32 | 显示全部楼层
z026 发表于 2016-11-3 03:34
(抱歉一个回车就发出去了。。。)

然后顺序查看过去,如下:

反例.png
这个例子你的算法就不行了吧
回复 支持 反对

使用道具 举报

南慕伦 发表于 2016-11-3 06:11:34 | 显示全部楼层
z026 发表于 2016-11-3 05:36
不太清楚题目是什么要求,如果车是一个点那么这样的解法应该可以行。如果车也有体积那就比较麻烦了。
. from: 1point3acres.com/bbs
...

上面的反例也适用于你说的算法吧。
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 04:03

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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