码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 561. Array Partition I

时间:2018-11-11 10:25:48      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:arrays   imu   which   return   partition   possible   public   ||   span   

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

标签:arrays   imu   which   return   partition   possible   public   ||   span   

原文地址:https://www.cnblogs.com/lz87/p/9941210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!