这个题用Java的一些特殊数据结构来做是很简单的,如果加一个思想就是最大堆思想。
class Solution { public int[] getLeastNumbers(int[] arr, int k) { if (k == 0) { return new int[0]; } Queue<Integer> heap = new PriorityQueue<>(k, (i1, i2) -> Integer.compare(i2, i1)); for (int e : arr) { if (heap.isEmpty() || heap.size() < k || e < heap.peek()) { heap.offer(e); } if (heap.size() > k) { heap.poll(); } } int[] res = new int[heap.size()]; int j = 0; for (int e : heap) { res[j++] = e; } return res; } }
end