[LeetCode] 561. Array Partition I

Posted Push your limit!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 561. Array Partition I相关的知识,希望对你有一定的参考价值。

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

 

Brute force solution‘s runtime will be too high when N is big. T(N) = (N - 1) * T(N - 2), where N is the length of the input array.

 

Efficient Solution using sorting

 1 class Solution {
 2     public int arrayPairSum(int[] nums) {
 3         if(nums == null || nums.length == 0) {
 4             return 0;
 5         }
 6         Arrays.sort(nums);
 7         int sum = 0;
 8         for(int i = 0; i < nums.length; i = i + 2) {
 9             sum += nums[i];
10         }
11         return sum;
12     }
13 }

 

Follow up question: 

1. change the question to make the sum of all  max(ai, bi) as large as possible.

2. change the question to make the sum of all max(ai, bi) as small as possible.

 

以上是关于[LeetCode] 561. Array Partition I的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-561(Array Partition I)

leetcode-561(Array Partition I)

leetcode-561-Array Partition I

[LeetCode] 561. Array Partition I

LeetCode 561. Array Partition I

561. Array Partition I - LeetCode