最小K个数(算法)
思路:采用二叉小顶堆实现
add()、offer()方法:插入元素(保持二叉小顶堆结构)
element()、peek()方法:获取权值最小元素(堆顶)
remove()、poll()方法:获取并删除队首元素
1 public ArrayList<Integer> minKNumber(int[]arr, int k){ 2 3 int low = 0; 4 int high = arr.length-1; 5 int index = -1;//下标 6 7 PriorityQueue<Integer> queue = new PriorityQueue<>(); 8 for(int i=0;i<arr.length;i++){ 9 queue.add(arr[i]); 10 } 11 12 ArrayList<Integer> list = new ArrayList<>(); 13 for(int i=0;i<k;i++){ 14 list.add(queue.poll()); 15 } 16 17 return list; 18 }
浙公网安备 33010602011771号