leetcode刷題記錄-561.數組拆分I[java,數組]

題目

給定長度爲 2n 的數組, 你的任務是將這些數分成 n 對, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得從1 到 n 的 min(ai, bi) 總和最大。

示例 1:

輸入: [1,4,3,2]

輸出: 4
解釋: n 等於 2, 最大總和爲 4 = min(1, 2) + min(3, 4).

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/array-partition-i
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

我的代碼

class Solution {
    public int arrayPairSum(int[] nums) {
        Arrays.sort(nums);
        int sum = 0;
        for (int i=0; i<nums.length; i+=2) {
            sum += nums[i];
        }
        return sum;
    }
}

小結

感覺題目並不打算在代碼能力上考察,主要是要想清楚該如何分組和才能最大的問題。最大的數肯定是沒有辦法計入總和了,但是第二大的可以。於是應該取排序後相鄰兩數爲一組。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章