知识点:堆
题目:
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
示例 1:
输入:
arr = [3,2,1], k = 2
输出:
[1,2] 或者 [2,1]
示例 2:
输入:
arr = [0,1,2,1], k = 1
输出:
[0]
限制:
0 <= k <= arr.length <= 10000 0 <= arr[i] <= 10000
我们用一个大根堆实时维护数组的前 k 小值。首先将前 k 个数插入大根堆中,随后从第 k+1个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。
offer(E e)
将指定的元素插入此优先级队列。不能添加null元素。
peek()
获取队列顶部元素——仅仅获取,没有删除
poll()
删除元素:删除堆顶元素——队列为空的时候返回null
class Solution {
public int[]