剑指 Offer 40. 最小的k个数
思路:1.直接排序后取前k个值
2.用一个大根堆实时维护数组的前 k 小值。首先将前 k 个数插入大根堆中,随后从第 k+1个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可,注意,java默认是小根堆,
实现大根堆需要重写一下比较器。
3.快排(待完善)
public int[] getLeastNumbers(int[] arr, int k) {
if (arr.length == 0.
原创
2021-01-24 17:10:11 ·
61 阅读 ·
0 评论