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]+")");

}

}

## No comments:

## Post a Comment