最小的K个数

注意写法必须先后在前,不然不对。

 public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {

        if(k==0) return new ArrayList<Integer>();
        quicksort(input,0,input.length-1);
        ArrayList<Integer> list=new ArrayList<Integer>();
        for (int i=0;i<k;i++){
            list.add(input[i]);
        }
        return list;
    }
    public void quicksort(int[] nums,int l,int r){
        if(l>r) return;
        int i=l,j=r;
        int pivot=nums[l];
        while (i<j){
            while (i<j&&nums[j]>=pivot) j--;
            while (i<j&&nums[i]<=pivot) i++;
            if(i<j) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
            }
        }
        nums[l]=nums[i];
        nums[i]=pivot;
        quicksort(nums,l,i-1);
        quicksort(nums,i+1,r);

    }




全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务