Skip to content

Instantly share code, notes, and snippets.

@sdpatil
Created August 22, 2017 00:36
Show Gist options
  • Save sdpatil/b8c01f2030d2611f5c86f1344e5c8c44 to your computer and use it in GitHub Desktop.
Save sdpatil/b8c01f2030d2611f5c86f1344e5c8c44 to your computer and use it in GitHub Desktop.
LeetCode 561: Array Partition I
import java.util.Arrays;
/*
Problem: 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).
*/
public class ArrayPartition1 {
/*
Solution: First sort the input array, then pair up elements next to each other that way we dont
loose much to Math.min() between pair
*/
public int arrayPairSum(int[] nums) {
Arrays.sort(nums);
int sum = 0;
for(int i = 0 ; i < nums.length-1; i= i+2){
sum = sum+ Math.min(nums[i],nums[i+1]);
}
return sum;
}
}
@akhiljalan
Copy link

I think in line 20, sum = sum+ Math.min(nums[i],nums[i+1]); is unnecessary. The array nums is already sorted, so you know that Math.min(nums[i],nums[i+1]) is always nums[i].

@NEULEDLAB
Copy link

I agree with @akhiljalan. Great Suggestion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment