输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
题很简单,就是找到小的就交换到前面去,并且添加到list。
原数组作为容器交换的话,我想的是不动原数组,就用了clone方法。
毕竟一个查询方法,完了之后改变了原数组的顺序,不太好。
注意判断要取得数目大于数组长度的情况;
import java.util.ArrayList; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list = new ArrayList<>(); if(input.length < k) { return list; } int[] array = input.clone(); int temp = 0; for(int i = 0; i < k; i++){ int min = i; for(int j = i ;j < array.length; j++) { if(array[min] > array[j]) { min = j; } } temp = array[i]; array[i] = array[min]; array[min] = temp; list.add(array[i]); } return list; } }