QUESTION
easy
题目描述
给定长度为 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).
说明
- n 是正整数,范围在 [1, 10000].
- 数组中的元素范围在 [-10000, 10000].
SOLUTION
这道题是求 min(ai, bi) 最大,那么最小的数一定会被加到答案上,那我每次都用最小的数和第二小的数一组,尽可能的去除小的数就可以了。(也不知道这题咋想的,考排序算法吗?)
方法一
直接把数组排序,然后得出结果。
class Solution {
public:
int arrayPairSum(vector<int>& nums) {
int res = 0;
sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size(); i+=2){
res += nums[i];
}
return res;
}
};