剑指offer40.最小的k个数

剑指offer40.最小的k个数_第1张图片

 简直不要太简单了这道题,先给数组排个序,然后输出前k个数就好了。我用的是快排,这是我的代码:

class Solution {
    public int[] getLeastNumbers(int[] arr, int k) {
       int n = arr.length;
       quickSort(arr, 0, n-1);
       int[] res = new int[k];
       for(int i =0;i=r)return;
       int i = l;int j = r;
       int key = arr[i];
       while(i= key && i

 题解除了这种方法,还有一种方法用的是优先队列,先取前k个数放进优先队列,然后往后遍历,如果这个数小于队列顶部,就出队把这个数放进队列,最后把队列里的k个数放进数组返回就可以了。

你可能感兴趣的:(剑指offer,leetcode,java,排序算法)