实时数据流中查找前k个频繁词

我正在尝试使用 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”进行了两次比较,比较器就完成了。我花了几个小时来调试,到目前为止我什么也没发现。


慕工程0101907
浏览 138回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java