由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - sliding windows中维持topk频繁的query
相关主题
Top K in N sorted array问两道google题
An interview question of finding the median in a moving window.讨论一道题
G家电面题目发个一直没有见过满意答案的题吧
问一道题(9)问个design的问题
top k 用 heap 还是quick selection?G家电面的两个题
问大家一个cpp中function pointer的问题LinkedIn面经(已跪),攒个rp
Two-Sigma面经刚电面完l家,只敲了一道题,看来是挂了。。。
问个题面试用C++, heap 怎么办?
相关话题的讨论汇总
话题: topk话题: query话题: sliding话题: 维持话题: window
进入JobHunting版参与讨论
1 (共1页)
k*******r
发帖数: 355
1
我知道无限stream中维持topK frequent query是用hashtable加一个大小为K的minheap
但sliding window中维持topk频繁的query这应该怎么做?如果用一个大小为K的
minheap再加一个大小为N-k的maxheap, 再加上hash table应该可以搞定。但通常N>>K
所以维持N-k的maxheap代价太大。
这题标准答案应该是什么样的?
s**x
发帖数: 7506
2
我搞糊涂了,moving window 的时候把左边移出去的相应的hash table 项 减1,右边
刚进入window的加1就行了吧?
k*******r
发帖数: 355
3
hash table减1以后,可能就不再是topK元素了,就要从原来小于topK的N-k个元素中找
一个顶上来。这样就不得不在N-K个元素中维持一个类似于heap的数据结构。但N>>k,这
样滑动一次, 为了维持heap最坏需要O(logN)开销太大啊
g*********e
发帖数: 14401
4
heap必须得把window里的东西都存在里面吧。想不出能怎么优化。哪的题?
s**x
发帖数: 7506
5

嗯,那就keep an ordered map for k elements.
就是一直保证这k 个是排序的,update delete etc should be logk.

【在 k*******r 的大作中提到】
: hash table减1以后,可能就不再是topK元素了,就要从原来小于topK的N-k个元素中找
: 一个顶上来。这样就不得不在N-K个元素中维持一个类似于heap的数据结构。但N>>k,这
: 样滑动一次, 为了维持heap最坏需要O(logN)开销太大啊

k*******r
发帖数: 355
6
但delete操作以后,如果使得这K个element里面最小的一个减1,那就不得不和剩下N-k
个元素做某种比较,那N就出现在时间复杂度里面了,没法做到logK吧
s**x
发帖数: 7506
7

-k
貌似还有个变量W for window size. I was assuming W = k.
I would use heap/map size of W.

【在 k*******r 的大作中提到】
: 但delete操作以后,如果使得这K个element里面最小的一个减1,那就不得不和剩下N-k
: 个元素做某种比较,那N就出现在时间复杂度里面了,没法做到logK吧

s******7
发帖数: 1758
8
剩下N-k没必要维护一个 max heap , 记录一个最大值足矣,所以还是了log k

-k

【在 k*******r 的大作中提到】
: 但delete操作以后,如果使得这K个element里面最小的一个减1,那就不得不和剩下N-k
: 个元素做某种比较,那N就出现在时间复杂度里面了,没法做到logK吧

k*******r
发帖数: 355
9
剩下N-k记录一个最大值是不够的,
因为做减1操作时如果刚好减到了原来N-K个纪录中最大值那里,你要判断这个最大值减
一后是否还是最大,如果不是最大用那哪个变成新的最大值。这就要一个N-K大小的
heap来维护
p**o
发帖数: 3409
10
"sliding window"具体指什么,完整上下文是什么?
听起来不像是说sliding window protocol

minheap
K

【在 k*******r 的大作中提到】
: 我知道无限stream中维持topK frequent query是用hashtable加一个大小为K的minheap
: 但sliding window中维持topk频繁的query这应该怎么做?如果用一个大小为K的
: minheap再加一个大小为N-k的maxheap, 再加上hash table应该可以搞定。但通常N>>K
: 所以维持N-k的maxheap代价太大。
: 这题标准答案应该是什么样的?

k*******r
发帖数: 355
11
就是比如在任意时刻,会查当过去8小时的top100个访问最频繁的google query. 现在
要求设计一种数据结构方便这种查询
相当于有一个8小时的time window不断滑动,随时要查这个time window内访问最频繁
的top100 query
1 (共1页)
进入JobHunting版参与讨论
相关主题
面试用C++, heap 怎么办?top k 用 heap 还是quick selection?
周末上道题问大家一个cpp中function pointer的问题
问一下那个经典的Slide window中最大值的问题Two-Sigma面经
大意了,尼玛问个题
Top K in N sorted array问两道google题
An interview question of finding the median in a moving window.讨论一道题
G家电面题目发个一直没有见过满意答案的题吧
问一道题(9)问个design的问题
相关话题的讨论汇总
话题: topk话题: query话题: sliding话题: 维持话题: window