Given an array of 2n integers, your task is to group these integers into n pairs of integer, say ((a_1, b_1), (a_2, b_2), ..., (a_n, b_n)) which makes sum of (min(a_i, b_i)) for all (i) from (1) to (n) as large as possible.
Example 1:
Input: [1,4,3,2]
Output: 4
Explanation: n is 2, and the maximum sum of pairs is 4 = min(1, 2) + min(3, 4).
Note:
- n is a positive integer, which is in the range of
[1, 10000]
. - All the integers in the array will be in the range of
[-10000, 10000]
.
自家代码:
先排序, 索引为偶数元素求和.
副产品为: vector的排序方式 sort(A.begin(), A.end())
.
(O(nlogn)) time, (O(1)) extra space.
int arrayPairSum(vector<int>& A) {
sort(A.begin(), A.end());
int sum = 0;
for (int i = 0; i < A.size(); i += 2) {
sum += A[i];
}
return sum;
}