## Friday, 21 October 2016

### Find a Pair Whose Sum is Closest to Zero in Array

This problem is also called minimum absolute sum pair.

You are given an array of integers, containing both +ve and -ve numbers. You need to find the two elements such that their sum is closest to zero.
import java.util.Arrays;

/**
* Class to find the pair whose sum closer to zero.
* @author rajesh.kumar
*/
public class SumClosestToZero {

public static void main(String[] args) {
int[] array = {10,12,14,16,-8,10,18,19,7,-6};

getPairWithCloserToZeroSum(array);

}

/**
* Method to print the pair.
* @param array
*/
private static void getPairWithCloserToZeroSum(int[] array) {
Arrays.sort(array);
int length = array.length;

if(length==0 || length==1) {
System.out.println("No pair exists !!");
}

int i = 0;
int j = length -1;
int minSum = array[i] + array[j];
int minL = i; int minR= j;
while (i  <  j) {
int sum = array[i] + array[j] ;
/* If sum of the elements at index i and j equals 0 */
if (Math.abs(minSum)>Math.abs(sum)) {
minSum = sum;
minL = i;
minR = j;
} else if(sum<0) {
i++;
} else {
j--;
}
}
System.out.println("Pair is"
+array[minL]+","+array[minR]+")");
}
}