输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4
思路:(迭代)
将数组前面的k个数单独取出来村为一个数组,将k后面的数与前面的k个数进行比较,如果小于前面k个数里面的数,就将k个数里面的最大数替换成这个数
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> arr = new ArrayList<Integer>();
int len = input.length;
if(k > len || k == 0){
return arr;
}
int[] res = new int[k];
for(int i = 0 ;i < k ;i++){
res[i] = input[i];
}
for(int i = k ;i < len;i++){
int max = res[0];
int index = 0;
for(int j = 0 ; j < k; j++){
if(max < res[j]){
max = res[j];
index = j;
}
}
if(res[index] > input[i]){
res[index] = input[i];
}
}
for(int i = 0 ;i < k ; i++){
arr.add(res[i]);
}
return arr;
}
}