28.找出最的几位数

输入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;
    }
}

猜你喜欢

转载自www.cnblogs.com/wzQingtTian/p/10664368.html