由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教大神们一道算法题关于实时输出Top K最频繁变动的股价
相关主题
不改变排序的hash算法?被recruiter问到的2个基础题
问两道google面试题哈希表能用来排序吗???CISCO的问题。
问一道F的面试题 - 找kNN for 2D points请教个面试题, tree和hashmap的区别
Ebay三电面,攒人品UBER 电面
问个题。求Programming Pearls 2nd 英文版 Complete Version
G电面的一个题bloomberg onsite 。
LinkedIn面经(已跪),攒个rp大量数据里面找top 100
问几个关于hash, map, set的问题Data Structure 一题.
相关话题的讨论汇总
话题: heap话题: top话题: hash话题: 变动话题: 实时
进入JobHunting版参与讨论
1 (共1页)
d**6
发帖数: 106
1
不知道是不是可以在这个版问
看面经的时候看到一个题,就是说不断有股票价格进来,要实时按顺序show出变动最频
繁的Top K只股票代码。原题在这,第一轮里面的问题 http://www.1point3acres.com/bbs/thread-113733-1-1.html
楼主说用heap来做,我没想明白用heap可以做到最优化么?
请教各位大神们
s****3
发帖数: 270
2
关注一下 也想知道...
h**********c
发帖数: 4120
3
rb trea
n*****x
发帖数: 686
4
最简单的是用1个treemap记录k个高频,一个hash map记录每个股票的频率,每次更新
都看一眼treemap的min,大就查找lowerbound然后更新。update时间复杂度O(k)。
如果update时间要求O1,就再加一个linked list记录k个频率,treemap改成hashmap记
录iterator。
那个楼主说的heap大概不行,得用hash heap

【在 d**6 的大作中提到】
: 不知道是不是可以在这个版问
: 看面经的时候看到一个题,就是说不断有股票价格进来,要实时按顺序show出变动最频
: 繁的Top K只股票代码。原题在这,第一轮里面的问题 http://www.1point3acres.com/bbs/thread-113733-1-1.html
: 楼主说用heap来做,我没想明白用heap可以做到最优化么?
: 请教各位大神们

d**6
发帖数: 106
5
我觉得这个方法靠谱!
非常感谢大牛指点!

【在 n*****x 的大作中提到】
: 最简单的是用1个treemap记录k个高频,一个hash map记录每个股票的频率,每次更新
: 都看一眼treemap的min,大就查找lowerbound然后更新。update时间复杂度O(k)。
: 如果update时间要求O1,就再加一个linked list记录k个频率,treemap改成hashmap记
: 录iterator。
: 那个楼主说的heap大概不行,得用hash heap

L***s
发帖数: 1148
6
hash heap 思路算是 baseline 标准答案。就在原有的 min heap array
基础上内置一个 hash map 来标记 key 在 heap array 中的 index,
sift up/down, pop, push 每次触发 swap 的时候更新 index 即可。
如果 N >> K,为省空间一般用 min heap of size K,时间每次 O(log K);
如果 N 和 K 差不多,用 max heap of size N,全装进去好了。
股票总数 N 其实不会太大,所以两者均可。
拓展开来,像这种求 top K frequent 的问题,在 N 非常大时,
hash heap 里面那个 hash map 容易爆(虽然可以取模分布在多机)。
如果不需要准确统计变动次数,允许计数误差(高估),
其实可用一些基于概率的数据结构来替换该 hash map,
比如类似 bloom filter 的各种变种,比如下面链接提到的 CM Sketch:
http://soulmachine.gitbooks.io/system-design/content/cn/bigdata/heavy-hitters.html

【在 n*****x 的大作中提到】
: 最简单的是用1个treemap记录k个高频,一个hash map记录每个股票的频率,每次更新
: 都看一眼treemap的min,大就查找lowerbound然后更新。update时间复杂度O(k)。
: 如果update时间要求O1,就再加一个linked list记录k个频率,treemap改成hashmap记
: 录iterator。
: 那个楼主说的heap大概不行,得用hash heap

1 (共1页)
进入JobHunting版参与讨论
相关主题
Data Structure 一题.问个题。
几道面试题G电面的一个题
问道Bloomberg的题目。LinkedIn面经(已跪),攒个rp
Facebook Interview Questions问几个关于hash, map, set的问题
不改变排序的hash算法?被recruiter问到的2个基础题
问两道google面试题哈希表能用来排序吗???CISCO的问题。
问一道F的面试题 - 找kNN for 2D points请教个面试题, tree和hashmap的区别
Ebay三电面,攒人品UBER 电面
相关话题的讨论汇总
话题: heap话题: top话题: hash话题: 变动话题: 实时