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