1. 程式人生 > 其它 >每日演算法之最小的K個數

每日演算法之最小的K個數

JZ40 最小的K個數

描述

給定一個長度為 n 的可能有重複值的陣列,找出其中不去重的最小的 k 個數。例如陣列元素是4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4(任意順序皆可)。

思路:

具體做法:
step 1:優先判斷k為0或者輸入陣列長度為0的特殊情況。
step 2:使用sort函式對整個陣列排序。
step 3:遍歷排序後的陣列前k個元素即可獲取最小的k個

程式碼

package mid.JZ40最小的K個數;

import java.util.ArrayList;
import java.util.Arrays;

public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {
        //儲存結果
        ArrayList<Integer> result = new ArrayList<>();
        //初始化最大元素為1位置的元素
        Arrays.sort(input);
        for (int i = 0; i < k; i++) {
            result.add(input[i]);
        }
        return result;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{4,5,1,6,2,7,3,8};
        System.out.println(new Solution().GetLeastNumbers_Solution(arr, 4));
    }
}