由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求助 A家题目 Number Pool
相关主题
问个merge interval的变体题Interval tree解法
去掉单向链表中的重复元素 with O(n) time and O(1) (转载)问个Facebook 电面题
Amazon电面面经leetcode 这题insert interval怎么做?
感觉G家面试还是和面的组工作内容略微相关的leetcode的online judge runtime error是指什么?
Bitmap是怎么回事啊?新鲜G面筋(Fail)
Probability quesiton把n个interval 放到一个container里
问个算法题, 关于区间 overlap的讨论一道面试题
FB interview question狗电面
相关话题的讨论汇总
话题: v0话题: pool话题: 元素话题: k0话题: tree
进入JobHunting版参与讨论
1 (共1页)
l***d
发帖数: 12
1
implement the class
初始的 number pool 包含 [1...MAXLong]元素
checkout 返回number pool最小的元素,并取出
checkin 插入元素到number pool中
考虑只存checkout的元素,没太想清楚各种情况。。。
谁能说说最优的方案么
j*****y
发帖数: 1071
2
难道不是用 min heap ?

interface NumberPool {
public long checkout();
public void checkin(long i);
}
implement the class
初始number pool contains [1...MAXLong]
checkout 返回最小的元素
checkin 插入元素
考虑只存checkout的元素,没太想清楚各种情况。。。
谁能说说最优的方案么
还要发code 给他。。。在线等。。。

【在 l***d 的大作中提到】
: implement the class
: 初始的 number pool 包含 [1...MAXLong]元素
: checkout 返回number pool最小的元素,并取出
: checkin 插入元素到number pool中
: 考虑只存checkout的元素,没太想清楚各种情况。。。
: 谁能说说最优的方案么

r*******e
发帖数: 7583
3
用一个set保存已经checkout的元素,同时用变量m记录下一个被checkout的元素
checkin(i):
如果 i 不在set里,没有影响;
如果 i 在set里,set.remove(i), if (i < m) m = i;
checkout()
ret = m
m = 从set.upper_bound(m)开始找,下一个不在set里的
set.insert(ret)
return ret

【在 l***d 的大作中提到】
: implement the class
: 初始的 number pool 包含 [1...MAXLong]元素
: checkout 返回number pool最小的元素,并取出
: checkin 插入元素到number pool中
: 考虑只存checkout的元素,没太想清楚各种情况。。。
: 谁能说说最优的方案么

r*******e
发帖数: 7583
4
初始条件是所有的数都在pool里,直接用heap太占空间

【在 j*****y 的大作中提到】
: 难道不是用 min heap ?
:
: interface NumberPool {
: public long checkout();
: public void checkin(long i);
: }
: implement the class
: 初始number pool contains [1...MAXLong]
: checkout 返回最小的元素
: checkin 插入元素

l***d
发帖数: 12
5
checkout 元素很多后,还有improve的方法么?

【在 r*******e 的大作中提到】
: 用一个set保存已经checkout的元素,同时用变量m记录下一个被checkout的元素
: checkin(i):
: 如果 i 不在set里,没有影响;
: 如果 i 在set里,set.remove(i), if (i < m) m = i;
: checkout()
: ret = m
: m = 从set.upper_bound(m)开始找,下一个不在set里的
: set.insert(ret)
: return ret

j******2
发帖数: 362
6
没有get it...是只要一直保存check in过的最小元素吗?那跟running min有啥区别呀
?干嘛要初始化呀?
c*******i
发帖数: 30
7
Interval Tree

【在 l***d 的大作中提到】
: checkout 元素很多后,还有improve的方法么?
l***d
发帖数: 12
8
不是的, 初始的元素有 maxlong 个,checkout的元素可能再次checkin

【在 j******2 的大作中提到】
: 没有get it...是只要一直保存check in过的最小元素吗?那跟running min有啥区别呀
: ?干嘛要初始化呀?

j******2
发帖数: 362
9
o,check out的就remove了是吗?
j******2
发帖数: 362
10
感觉这个是对的。。。

【在 c*******i 的大作中提到】
: Interval Tree
r*******e
发帖数: 7583
11
具体说说吧
如果保存还没被checkout的元素
checkin的时候怎么merge interval

【在 c*******i 的大作中提到】
: Interval Tree
b*****u
发帖数: 648
12
我也碰到这题了
初始条件无穷个数
d*******y
发帖数: 27
13
不是很明白题意。如果元素唯一的话,就可以用bitmap啊。
如果初有maxlong个元素,那么就是大约有4billion个数。用个bitmap,4G/8=512M。
checkout的时候从最小的开始扫描,直到发现第一个存在的数,clear bit后返回。
checkin的时候直接找到相应的位置,set bit就好了。
z****p
发帖数: 18
14

-The interval tree is a binary search tree where each node in the tree
stores a (key,value) pair: the key is the left end of an interval, and the
value is the right end.
-The interval tree for this problem is special in that the intervals are non
-overlapping.
-Initially, the tree only contain 1 node, the (1, MaxLong) pair.
-Check out value v: find the largest key that is smaller than v, look at its
value, assuming it looks like (k0,v0); if v0 is less than v, then v is not
in the pool, and the check out fails; otherwise, remove that node (interval)
and spilt the interval into two (k0, v-1), (v+1, v0), and insert them back
into the tree.
-Check in v: find two intervals: (a) the largest key that is smaller than v,
say (k0,v0), and (b) the smallest key that is larger than v, say (k1,v1),
in the interval tree (they are consecutive intervals for sure).
---if v < v0, then v is already in the pool, the check in can be ignored.
---else if v0 == v-1 && v+1 == k1, then merge (k0,v0) and (k1,v1) into (k0,
v1), by removing them from the tree and inserting back the merged interval
---else if v0 == v-1, update (k0,v0) to (k0,v)
---else if v+1 == k1, remove (k1,v1) from tree and insert back (v+1,v1)
---else, insert new node (v,v)
that's it.

【在 r*******e 的大作中提到】
: 具体说说吧
: 如果保存还没被checkout的元素
: checkin的时候怎么merge interval

1 (共1页)
进入JobHunting版参与讨论
相关主题
狗电面Bitmap是怎么回事啊?
leetcode 的 Insert Interval 就是过不了大的Probability quesiton
Insert Interval large case测试没过,怎么优化?问个算法题, 关于区间 overlap的
Merge Interval那道题FB interview question
问个merge interval的变体题Interval tree解法
去掉单向链表中的重复元素 with O(n) time and O(1) (转载)问个Facebook 电面题
Amazon电面面经leetcode 这题insert interval怎么做?
感觉G家面试还是和面的组工作内容略微相关的leetcode的online judge runtime error是指什么?
相关话题的讨论汇总
话题: v0话题: pool话题: 元素话题: k0话题: tree