题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。...13&tqId=11182&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
第一种方法,用优先级队列构造出最大堆...但是这里利用集合并不好,手写最大堆会比这个更优,因为在超过k个数的时候,优先级队列需要poll和offer(或者add)操作,poll会下沉恢复堆有序(源码思路:将数组最后一个元素赋给堆顶,size-1...PS:优先级队列的传入比较器参数new Comparator是需要在上浮和下沉的时候将回调我们重写的compare方法来构建出最大最小堆。
...target[0] = input[i];
siftDown(target, 0, target[0]);
// 相比优先级队列