import java.util.*; publicclassSolution{ public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k){ if(input==null || input.length==0 || k>input.length) returnnew ArrayList<Integer>(); int len = input.length; ArrayList<Integer> res = new ArrayList<Integer>(); sort(input, 0, input.length-1, k-1); for(int i=0; i<k; i++){ res.add(input[i]); } return res; } privatevoidsort(int[] input, int low, int high, int k){ int l = low; int h = high; while(l<h){ int tmp = partition(input, l, h); if(tmp==k) break; if(tmp>k){ h = tmp-1; }else{ l = tmp+1; } } } privateintpartition(int[] input, int l, int h){ int criterion = input[h]; int i = l-1; int j = h; while(true){ while(i<j && input[++i]<criterion); while(i<j && input[--j]>criterion); if(i>=j) break; swap(input, i, j); } swap(input,i, h); return i; } privatevoidswap(int[] arr, int a, int b){ int tmp = arr[a]; arr[a] = arr[b]; arr[b] = tmp; } }