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.

Revisions

  1. sdpatil created this gist Aug 22, 2017.
    24 changes: 24 additions & 0 deletions ArrayPartition1.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    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;
    }
    }