因为是最小的k个数 但是数组从零开始算 所以应该是index最小为k-1的数
快排思想
import java.util.ArrayList;
public class Solution {
int target = -1;
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> res = new ArrayList<Integer>();
partitoin(input,0,input.length-1,k-1);
for(int i=0; i<input.length && k>0; i++) {
if(input[i] <= target) {res.add(input[i]); k--;}
}
return res;
}
public void partitoin(int [] nums, int l, int r, int k){
if(l>r) return;
int i = l;
int j = r;
int temp = nums[l];
while(i<j){
while(i<j && nums[j]>=nums[l]) j--;
while(i<j && nums[l]>=nums[i]) i++;
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
nums[i] = nums[l];
nums[l] = temp;
if(i == k) target = nums[i];
else if(i>k) partitoin(nums,l,i-1,k);
else partitoin(nums,i+1,r,k);
}
}


京公网安备 11010502036488号