题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
输入 [4,5,1,6,2,7,3,8],4
输出 [1,2,3,4]
思路:排序+取值
如题所示我们可以将数组转为升序然后取前四个数组中的值
代码:
public static ArrayList<Integer> GetLeastNumbers_Solution (int[] input, int k) { int a = input.length; /*使用冒泡排序将数组整理为升序*/ for (int i = 0; i < a -1; i++) { for (int j = 0; j < a - i -1; j++) { if (input[j]>input[j+1]){ int temp = input[j]; input[j] = input[j+1]; input[j+1] = temp; } } } /*取0-k的值*/ int []result = Arrays.copyOfRange(input,0,k); /*使用stream流将数组转化为arraylist*/ return (ArrayList<Integer>) Arrays.stream(result).boxed().collect(Collectors.toList()); } public static void main(String[] args) { int [] input = {4,5,1,6,2,7,3,8}; int k = 4; ArrayList<Integer> integers = GetLeastNumbers_Solution(input, k); System.out.println("integers = " + integers); }
运行结果: