Leetcode 561. Array Partition I

ss
1 min readJun 16, 2019

--

想像有時候真的會侷限自己的力量, 這題其實非常簡單, 題目要表達的就是兩兩一組, 然後從每組中取min的值相加, 最後我們要找到最大的總和, 這邊我們可以想一下, 最小的那個值無論跟誰排都最小, 而最大的直跟誰排肯定都無法出線, 所以從這兩個點來看, 最小值一定要跟第二小的一起排, 最大的值自然是要找第二大的值! 這樣即使最大值一定無法出線, 我們也要讓第二大的可以,

根據以上, 我們只要排序後, 依序兩兩一組分就行了

int arrayPairSum(vector<int>& nums) {
if(nums.size()==0) return 0;
sort(nums.begin(), nums.end());
int ans= 0;
for(int i = 0 ; i < nums.size();i++){
if(i%2==0){
ans += nums[i];
}
}
return ans;
}

程式碼如上

--

--

ss
ss

No responses yet