Array Partition

easy array greedy sorting

Problem

Given an integer array of length 2n, group it into n pairs so that the sum of min(a, b) over all pairs is maximised; return that sum.

Inputnums = [1,4,3,2]
Output4
Sort → [1,2,3,4]. Pair (1,2),(3,4); take 1+3 = 4.

def array_pair_sum(nums):
    nums.sort()
    return sum(nums[::2])
function arrayPairSum(nums) {
  nums.sort((a, b) => a - b);
  let s = 0;
  for (let i = 0; i < nums.length; i += 2) s += nums[i];
  return s;
}
class Solution {
    public int arrayPairSum(int[] nums) {
        Arrays.sort(nums);
        int s = 0;
        for (int i = 0; i < nums.length; i += 2) s += nums[i];
        return s;
    }
}
int arrayPairSum(vector<int>& nums) {
    sort(nums.begin(), nums.end());
    int s = 0;
    for (int i = 0; i < (int)nums.size(); i += 2) s += nums[i];
    return s;
}
Time: O(n log n) Space: O(1)