Skip to content
This repository was archived by the owner on Aug 14, 2024. It is now read-only.

Files

Latest commit

author
Chenyu
Jun 9, 2017
c0b9209 · Jun 9, 2017

History

History
44 lines (30 loc) · 989 Bytes

561.md

File metadata and controls

44 lines (30 loc) · 989 Bytes

561. Arrat Partition I

Description

Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), ..., (an, bn) which makes sum of min(ai, bi) 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.

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].

Thinking Process

  1. This is a greedy algorithm problem
  2. Sort the array, and partition it such that the difference between ai and bi is miniminzed for each pair

Code

public class Solution {
    public int arrayPairSum(int[] nums) {
        Arrays.sort(nums);
        int sum = 0;
        for(int i = 0; i < nums.length; i += 2){
            sum += nums[i];
        }
        return sum;
    }
}

Complexity

  1. Time complexity is O(nlogn)