发现脉脉确实挺有意思的哈,有人吐槽职场,有人招聘,有人分享面经,我今天看到有人发了个动态说面试被问Top K问题,忘记怎么做了,答得不是很好。...这肯定不是面试官想要的答案,要真是这种程度的答案,那这应该是给大一新生的课后作业。?
答案是可以,我之前在双堆问题里面也说过,在一堆数据中追踪前几个符合条件的数据用堆最快。...我们来看看用堆我们能不能得到一个更好的方案?...如果我们遍历这个数组,并且在堆中保存最大的K个元素,一旦我们遇到一个比堆中最小元素大的元素,我们要做两件事:
从堆中移除最小的那个元素
把这个更大的元素插入到堆中
这样我们就可以保证堆中保存的是我们到目前为止遇到的最大的...示例3:
输入: [1, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5], and K=2
输出: 3
解释: 移除一个4,然后3跟5随便选一个,我们能得到3个不同的数。