剑指 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 ·
111 阅读 ·
0 评论