记录一个笨办法。。
新建一个数组保存前k个数,往后k个数遍历,每一次遍历中,如果找到比前k个数中最大值小的数,将其替换。
最后返回这k个数的数组。
import java.util.*; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> res=new ArrayList<Integer>(); int[] r1=new int[k]; if(input.length==0||input==null||k<=0||k>input.length) return res; for(int i=0;i<k;i++) r1[i]=input[i]; for(int i=k;i<input.length;i++){ int max=r1[0]; int index=0; for(int j=0;j<k;j++){ if(r1[j]>max){ max=r1[j]; index=j; } } if(max>input[i]){ //res.remove(max); r1[index]=input[i]; } } for(int j=0;j<k;j++){ res.add(r1[j]); } return res; } }