原题链接:Array Partition I
分析:这道题觉得没什么意思,关键是要明白所谓的pair的最小值的sum要最大,是不是让每个pair的min发挥的价值要大一点,换句话说就是我的最小值是不是要同时抹掉另一个很小的值,这样其他的pair的min就会大一点。这样一来,问题就迎刃而解了。排序,两两组队,取偶数位的sum就是结果。
代码如下:
class Solution {
public:
int arrayPairSum(vector<int>& nums) {
/*
Time Complexity:O(nlgn)
Space Complexity:O(1)
*/
sort(nums.begin(),nums.end());
int res=0;
auto beg=nums.begin();
auto end=nums.end();
while(beg!=end){
res+=*beg;
beg+=2;
}
return res;
}
};