Redian新闻
>
系统设计:数据流中出现最频繁的k个元素(find top k frequent items in a data stream)
avatar
n*s
2
刷题要仔细,还要动脑筋。文里说了是“小根堆”, size k, 取最小值。
你这样面试时问题稍微拐个弯就得懵了。
avatar
P*e
3
明白了。确实是我没看仔细。可是如果用了最小堆,只能解决“每次来一个新的成员如
果比现有最小成员大,剔除现有最小成员,把新成员加入”的问题,要return top K,
每次要把这个堆的每个元素都pop()出来,这样一来这个堆不久摧毁了, 以后还要
return top K 怎么处理? 难道每次pop()出来,return top k, 再放回去?
还有,如果考虑数据量太大单机一个heap放不下,放入几个机器里做好几个heap,最后
汇总到另外一台机器上的global heap. 如果每个单机都用的是最小堆,怎么汇总? 汇
总时候难道不需要把每个单机上最大的item放到global heap上马?min heap 找最大
item 不又要吧所有item都pop() 掉?
avatar
c*t
4
xd, 堆里的每个元素都是top k,堆顶是minimal count to make into top k,为啥非
得pop出来 sort? 复制一份不行吗?k大到单机都放不下?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。