我正在尝试使用 java 树集解决算法问题。
问题如下:
Find top k frequent words in realtime data stream.
Implement three methods for Topk Class:
TopK(k). The constructor.
add(word). Add a new word.
topk(). Get the current top k frequent words.
我的想法是使用哈希图来记住频率和树集作为缓冲区。
我的实现通过了大部分情况,除了一个:
TopK(10)
add("aw")
add("fb")
add("fb")
topk()
答案应该是 [fb,aw] 但现在是 [fb,aw, fb] 但是,我的代码通过了测试用例,例如:
TopK(10)
add("iiiiii")
add("fb")
add("fb")
topk()
和
TopK(10)
add("fb")
add("fb")
topk()
我不知道出了什么问题,所以我在调用比较器时打印了一些值。它给了我这个:
aw aw
11111111
fb aw
33333333
fb aw
33333333
fb aw
222222222
fb aw
222222222
这意味着,第二个“fb”与“aw”进行了两次比较,比较器就完成了。我花了几个小时来调试,到目前为止我什么也没发现。
相关分类