我最近被问到一个面试问题,在一段时间内找到N(10,20)
中的热门List
个整数。 List
是在5秒的常规间隔期间动态添加的元素。您能告诉我如何使用正确的数据结构和算法解决这个问题。
答案 0 :(得分:1)
这些问题通常不是很复杂。
最后20个条目中最高的10个:最多20个元素的ArrayList,最后添加可能会在开头删除一个。然后将它们添加到新的SortedSet(如TreeSet),并按相反的顺序取第10个。见@iced
如果一个队列适合,那很好。 (它并非完全如此。)但最重要的是正确性。看到你无法对ArrayList进行排序。当许多重复时,可能会出现少于10个顶部数字。添加并发保护等的要点。
答案 1 :(得分:0)
您可以使用Java Priority Queue /最大堆。