package suanfa.array;
import java.util.*;
/**
获取最小的k个数字
/
public class GetLeastNumbers {public static void main(String[] args) {
int[] nums = new int[]{3, 2, 1}; List<Integer> result = getLeastNumbersBySort(nums, 2);
}
/**
通过堆实现
@param nums
@param k
@return
/
public static List<integer> getLeastNumbers(int[] nums, int k) {</integer>PriorityQueue<integer> queue = new PriorityQueue<>(new Comparator<integer>() {</integer></integer>
@Override public int compare(Integer o1, Integer o2) { return o2 - o1; }
});
for (int num : nums) {
if (queue.size() < k) { queue.offer(num); } else { if (queue.peek() > num) { queue.poll(); queue.offer(num); } }
}
List<integer> list = new ArrayList<>();</integer>
while (queue.size() > 0) {
list.add(queue.poll());
}
return list;
}/**
对数组升序排序
@param nums
@param k
@return
/
public static List<integer> getLeastNumbersBySort(int[] nums, int k) {</integer>Arrays.sort(nums);
List<integer> result = new ArrayList<>();</integer>for (int i = 0; i < k; i++) {
result.add(nums[i]);
}
return result;
}
}