123
返回列表 发新帖
楼主: cjqhenry
跳转到指定楼层
上一主题 下一主题
收起左侧

Palantir onsite被虐记

🔗
GTmac 2015-3-26 00:28:40 | 只看该作者
全局:
shawlin 发表于 2015-3-24 22:39
没理解啊,能不能细说下?

比如我有两个区间:[1,3]和[2,4]。对于区间的开始(1和3),我们给他们一个+1的tag,对于区间的结束(2和4),我们给他们一个-1的tag。这样一共得到了4个pair:(1,+1), (2, -1), (3, +1), (4, -1)。

然后,对所有pair按照坐标排序,这一步是O(nlogn)。维护一个counter表示当前点在多少个区间内部。顺序扫描所有的pair,如果遇到+1就把counter+1,遇到-1就把counter-1。counter最大的那个点就是我们要求的。

也可以用线段树,但是那样就麻烦了。
回复

使用道具 举报

🔗
robinho364 2015-3-26 01:23:34 | 只看该作者
全局:
GTmac 发表于 2015-3-26 00:28
比如我有两个区间:[1,3]和[2,4]。对于区间的开始(1和3),我们给他们一个+1的tag,对于区间的结束(2和 ...

对的,没错。刚才睡觉的时候突然想到了。

之前因为考虑到反正都是nlogn的复杂度,就套个线段树好了。

但是这里因为是离线的操作,只需要查一次,所以直接统计count就可以了。

可以证明这个方法是对的。
回复

使用道具 举报

🔗
robinho364 2015-3-26 01:25:49 | 只看该作者
全局:
GTmac 发表于 2015-3-26 00:28
比如我有两个区间:[1,3]和[2,4]。对于区间的开始(1和3),我们给他们一个+1的tag,对于区间的结束(2和 ...

你们是做wi输入法的那个实验室么……

我同学也是你们那出来的哈。

果然都是牛人。
回复

使用道具 举报

🔗
 楼主| cjqhenry 2015-3-26 01:29:13 | 只看该作者
全局:
shawlin 发表于 2015-3-25 23:52
建一个interval search tree? 再次感谢,求个代码链接
我的思路是 每一个interval 对应一个字符 比如
[ ...

这个好像面筋看到过,当时没想到- -||
回复

使用道具 举报

🔗
GTmac 2015-3-26 02:52:59 | 只看该作者
全局:
robinho364 发表于 2015-3-25 13:25
你们是做wi输入法的那个实验室么……

我同学也是你们那出来的哈。

不是,我是IR实验室的~ 不过好多同学是WI输入法那个实验室的^^ 你的同学叫啥啊?没准我认识哈哈
回复

使用道具 举报

🔗
shawlin 2015-3-26 03:07:32 | 只看该作者
全局:
GTmac 发表于 2015-3-25 11:28
比如我有两个区间:[1,3]和[2,4]。对于区间的开始(1和3),我们给他们一个+1的tag,对于区间的结束(2和 ...

我太菜了,还是没明白 对于区间
[1, 3] [2, 4]
4个pair是
(1, +1)
(2, +1)
(3, -1)
(4, -1)?
排好序后怎么找到答案呢?谢谢哈
回复

使用道具 举报

🔗
shawlin 2015-3-27 02:47:50 | 只看该作者
全局:
robinho364 发表于 2015-3-25 12:23
对的,没错。刚才睡觉的时候突然想到了。

之前因为考虑到反正都是nlogn的复杂度,就套个线段树好了。
...

我太菜啊,还是没明白,求讲一下,谢谢啦!
回复

使用道具 举报

🔗
robinho364 2015-3-27 09:33:06 | 只看该作者
全局:
shawlin 发表于 2015-3-27 02:47
我太菜啊,还是没明白,求讲一下,谢谢啦!



hi!

其实可以先不用考虑排序的问题。

先把线段的端点都标记了,如图所示,然后从左到右计算counter的和。

排序是为了离散化用的,只有排序以后才能达到统计过程为O(n)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
回复

使用道具 举报

🔗
 楼主| cjqhenry 2015-3-28 13:17:02 | 只看该作者
全局:
GTmac 发表于 2015-3-26 00:28
比如我有两个区间:[1,3]和[2,4]。对于区间的开始(1和3),我们给他们一个+1的tag,对于区间的结束(2和 ...

orz GTmac大神, 解法太酷炫
回复

使用道具 举报

🔗
xiaoyin_2013 2015-4-23 20:39:28 | 只看该作者
全局:
robinho364 发表于 2015-3-27 09:33
hi!

其实可以先不用考虑排序的问题。

Hi, 还是没明白你这个解法, 你这个算完3这个点的counter是3, 4这个点的counter是1,但是从图中看3,4不应该都是有3个overlap吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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