题源:LeetCode
题解:最小的数对和,应该是将数组先从小到大进行排序,数组中最小的元素和最大的元素进行一对,第二小的元素和第二大的元素组一对,以此类推才能保证求最小的数对和。而最小数对和中的最大值,即将上面数对和相加的结果放到数组中,进行从小到大排序后,最后一个元素值就是所求答案。我为了节省空间,直接将数对相加后的结果放到了原数组中。
代码:
class Solution {
public:
int minPairSum(vector<int>& nums) {
sort(nums.begin(),nums.end());
int len=nums.size();
for(int i=0;i<len/2;i++){
nums[i]=nums[i]+nums[len-1-i];
}
sort(nums.begin(),nums.begin()+len/2);
return nums[len/2-1];
}
};