力扣初級算法(數組拆分)
- 每日一算法: 力扣初級算法(數組拆分)
學習內容:
1.問題描述
給定長度為 2n 的整數數組 nums ,你的任務是將這些數分成 n 對, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得從 1 到 n 的 min(ai, bi) 總和最大。
返回該 最大總和 。
2.個人理解
拿到這個題,一開始也是懵的,但是讀完以后,就知道如果我們要求每對最小值相加得到的數為最大值,那么我們就應該要確保每對最小值也要拿到最大值,如果最大跟最小組隊,最大值就舍棄了。如果最大值跟第二大值組隊,就能拿到第二大值,第三大與第四大組隊,就能拿到第四大值。我們就得到了規律,先進行排序,這樣我們就能從后往前拿到第二大值,相加起來也就最大,也就是整個數組取奇數和相加。
3.代碼的實現
class Solution {public int arrayPairSum(int[] nums) {int length = nums.length;int sum = 0;Arrays.sort(nums);for(int i = 0;i<length-1;i=i+2){sum = sum+nums[i];}return sum;}
}