由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一道面试题。
相关主题
新店面CLRS interval tree 的两道练习题
问一道 facebook 面试题FLAG面试总结
leetcode insert interval 为什么没人用binary search?最近有人面过quixey咩?弯曲一个做search engine的公司
问个Facebook 电面题讨论一道面试题
leetcode 这题insert interval怎么做?大家看看这几道google面试题怎么做?
f电面一道面试题
讨论一道面试题问一道salesforce面试题
Facebook第一轮电面面经一到面试题 弱弱求解答
相关话题的讨论汇总
话题: intervals话题: ai话题: interval话题: number话题: end
进入JobHunting版参与讨论
1 (共1页)
d******a
发帖数: 238
1
giving lots of intervals [ai, bi], find the interval which intersect with
the most number of intervals n*logn 解法.
这个和Given n intervals [si, fi], find the maximum number of overlapping
intervals 那个 +1, -1的方法不一样啊。
大家有什么好办法没?
h****t
发帖数: 69
2
Idea:
1) Sort the set of points ai, bi
2) Initialize start = 0, end = 0, Ni = 0
3) Iterate through sorted points
i) Encounter ai: start++, Ni = -end
ii) Encounter bi: end++, Ni += start - 1
4) Find biggest Ni
x********u
发帖数: 1061
3
是不是相交,包括都算intersect?
我的想法是:排序加扫一遍就行了
根据interval的开头排序,
然后扫一遍,从第一个开始,每个interval的结尾从本interval的开头开始二分查找,
看超过了哪些interval的开头,超过的那个就互为intersect,两个interval的
intersect数目加1
扫完了找到最大的那个,就行了
d******a
发帖数: 238
4
不是很明白?您能说的更详细点吗?谢谢!

【在 h****t 的大作中提到】
: Idea:
: 1) Sort the set of points ai, bi
: 2) Initialize start = 0, end = 0, Ni = 0
: 3) Iterate through sorted points
: i) Encounter ai: start++, Ni = -end
: ii) Encounter bi: end++, Ni += start - 1
: 4) Find biggest Ni

d******a
发帖数: 238
5
不是很明白?您能说的更详细点吗?谢谢!

【在 h****t 的大作中提到】
: Idea:
: 1) Sort the set of points ai, bi
: 2) Initialize start = 0, end = 0, Ni = 0
: 3) Iterate through sorted points
: i) Encounter ai: start++, Ni = -end
: ii) Encounter bi: end++, Ni += start - 1
: 4) Find biggest Ni

d******a
发帖数: 238
6
这个复杂度是 N * N? 你可能每次都超过k个interval的头,而且k不是O(1).

【在 x********u 的大作中提到】
: 是不是相交,包括都算intersect?
: 我的想法是:排序加扫一遍就行了
: 根据interval的开头排序,
: 然后扫一遍,从第一个开始,每个interval的结尾从本interval的开头开始二分查找,
: 看超过了哪些interval的开头,超过的那个就互为intersect,两个interval的
: intersect数目加1
: 扫完了找到最大的那个,就行了

h****t
发帖数: 69
7
Number of intervals intersected by interval i
= number of intervals with start point before ai and end point after ai
+ number of intervals with start point between ai and bi
= number of intervals with start point before bi (excluding ai)
- number of intervals with end point before ai
When you encounter ai,
end = Number of intervals with end point before ai
=> Ni = - end
When you encounter bi,
start = Number of intervals with start point before bi (ai included)
=> Ni += start - 1

【在 d******a 的大作中提到】
: 不是很明白?您能说的更详细点吗?谢谢!
u****w
发帖数: 4
8
我的思路
1. 按si排序整个区间。
2. 去除被包含的子区间,记录包含区间中含有子区间的个数。
3. 顺序扫描区间,用小堆维护之前出现的fj,如果堆顶元素小于si,则弹出,剩下的元
素是相交元素的个数 & si > sj.
4. 逆序扫描区间,用大堆维护之前出现的sj,同理得到相交的区间个数 & sj < si。
5. 把步骤2, 3, 4得到的结果相加,就是该区间的相交区间个数。
d*******s
发帖数: 695
9
这个似乎不行,但二分也许是个好思路
假设有个(6, 15) (7, 14) (7.5, 12) (8, 13)
对(7.5, 12)来说,一二分,就会把(6,15)给漏掉。

【在 x********u 的大作中提到】
: 是不是相交,包括都算intersect?
: 我的想法是:排序加扫一遍就行了
: 根据interval的开头排序,
: 然后扫一遍,从第一个开始,每个interval的结尾从本interval的开头开始二分查找,
: 看超过了哪些interval的开头,超过的那个就互为intersect,两个interval的
: intersect数目加1
: 扫完了找到最大的那个,就行了

d*******s
发帖数: 695
10
好像是对的,但是还是不太难看懂,能写个例子么?多谢!

【在 h****t 的大作中提到】
: Number of intervals intersected by interval i
: = number of intervals with start point before ai and end point after ai
: + number of intervals with start point between ai and bi
: = number of intervals with start point before bi (excluding ai)
: - number of intervals with end point before ai
: When you encounter ai,
: end = Number of intervals with end point before ai
: => Ni = - end
: When you encounter bi,
: start = Number of intervals with start point before bi (ai included)

相关主题
f电面CLRS interval tree 的两道练习题
讨论一道面试题FLAG面试总结
Facebook第一轮电面面经最近有人面过quixey咩?弯曲一个做search engine的公司
进入JobHunting版参与讨论
x********u
发帖数: 1061
11
哦,我搞错了,
我觉得可以有两个已经排序的数组对吧,一个存已经扫过的interval的end,这个数组
是动态更新的,每扫过一个就把本次interval的end写进去,数组是已排序的,写一个
新数字需要耗费logN
一个存还未扫过的interval的beginning,这样每扫到一个interval做两个二分查找么
,先查这个头越过了多少个之前interval的尾巴,耗费logN,再查这个尾巴越过了多少
之后interval的头,耗费logN,加法一次,就是这个interval和多少其他interval相交
了,你看这个对不对

【在 d******a 的大作中提到】
: 这个复杂度是 N * N? 你可能每次都超过k个interval的头,而且k不是O(1).
n***z
发帖数: 29
12
ls说的是对的,其实不难,画个图就行了。主要是如何算start在ai前,end在ai后的
interval。
分别按start,end点排序,对于每个interval,用bi点前start的数量-ai点前end的数
量就行了,2次binary search。
m*****k
发帖数: 731
13
一道店面
public class RatePeriod {
private Date startDate;
private Date endDate;
private Integer nightlyRate;
/* Assume getters, setters, hashCode, equals, toString have been impl’d
. */
}
/**
Returns a flattened list of rate periods where “flattened” means that any
overlaps have been resolved by favoring the greatest nightlyRate for the
duration of the overlap.
Example:
flatten [(2015-01-01, 2015-12-31, 125), (2015-03-07, 2015-03-21, 175)]
Output:
[(2015-01-01, 2015-03-06, 125),
(2015-03-07, 2015-03-21, 175),
(2015-03-22, 2015-12-31, 125)]
Viz:
Jan 1 |------------------------------125------------------------------| Dec
31
Mar 07 |----175----| Mar 21
Output:
Jan 1 |-----125-----|----175----|----------------125------------------| Dec
31
dates may duplicate and there may be gaps as well.
x*******9
发帖数: 138
14
先离散化一下,性能会好不少。
m*****n
发帖数: 2152
15
题目没看懂,什么意思?
[1,4] [2,5] : return [1, 4] or [2, 5] or None or all of them?
[1,4] [1,4] [2,5]: return [1, 4] or [2, 5] or None or all of them?
[1,4] [2,5] [1,5]: return [1,4] or [2, 5] or [1, 5] or all of them?

【在 d******a 的大作中提到】
: giving lots of intervals [ai, bi], find the interval which intersect with
: the most number of intervals n*logn 解法.
: 这个和Given n intervals [si, fi], find the maximum number of overlapping
: intervals 那个 +1, -1的方法不一样啊。
: 大家有什么好办法没?

1 (共1页)
进入JobHunting版参与讨论
相关主题
一到面试题 弱弱求解答leetcode 这题insert interval怎么做?
除了某家之外,讨论个F的面试题吧,merge 2D intervalf电面
Probability quesiton讨论一道面试题
问个算法题, 关于区间 overlap的Facebook第一轮电面面经
新店面CLRS interval tree 的两道练习题
问一道 facebook 面试题FLAG面试总结
leetcode insert interval 为什么没人用binary search?最近有人面过quixey咩?弯曲一个做search engine的公司
问个Facebook 电面题讨论一道面试题
相关话题的讨论汇总
话题: intervals话题: ai话题: interval话题: number话题: end