最小的K个数
输入整数数组 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]
import java.util.PriorityQueue; import java.util.Queue; /** * @author wangyuyang * @create 2020/9/4 22:42 */ public class demo2 { class Solution { public int[] getLeastNumbers(int[] arr, int k) { if (arr == null || arr.length == 0 || k <= 0) { return new int[0]; } Queue<Integer> queue = new PriorityQueue<>((V1, V2) -> V2 - V1); for (int number : arr) { if (queue.size() < k) { queue.offer(number); } else if (number < queue.peek()) { queue.poll(); queue.offer(number); } } int[] list = new int[queue.size()]; int count = 0; for (int result : queue) { list[count++] = result; } return list; } } }

浙公网安备 33010602011771号