561. Array Partition I

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:

  1. n is a positive integer, which is in the range of [1, 10000].
  2. 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;
}
原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7360744.html