
Example
Given [3,10,1000,-99,4,100] and k = 3. Return [1000, 100, 10].
解法有以下几种:
1. bubble sort k times. 复杂度O(nk)
2. 使用临时数组。O((n-k)k)
3. sort。O(NLogN)
4. max heap。O(N + klogN)
先构造一个Max Heap, O(n)。然后从上面pop heap top for K times。 O(KlogN)。
这也解决了我很长时间来的一个疑问,如何才能高效的把一个vector用hard threshold变成K-sparse。哪些元素该留,哪些元素该变成零。