Given an integer input parameter reqSum, find all pairs in an input array of integers named arr that sum up to it.
| Input Parameters |
Expected outputs |
intArray1 = {1,2,3,4,9,-3,0};
Required Sum : 3
|
Found pair that sum up to requiredSum : [2,1]
Found pair that sum up to requiredSum : [0,3]
|
intArray8 = {1,3,-5,7,-9,11,13};
requiredSum=0;
|
No pairs that sum up to requiredSum were found !
|
| The java method should accept following input parameters: arr (int array), reqSum (integer).
|
| Initialize a variable named complementsHash of type HashSet to hold the input elements of arr.
|
| Initialize integer variable named complement to 0.
|
| Initialize integer variable named isComplementFound to false.
|
| Using a for loop iterate through arr, using idx as a loop variable with initial value 0 and increment idx till it reaches arr.length-1:
Calculate reqSum=arr[idx] and set this value in variable complement. This means if complement is added to arr[idx] the sum will be equal to reqSum. This way we can find pairs of integers that sum up to reqSum.
If complementsHash contains complement:
arr[idx] and complement are a pair of integers in arr that sum up to reqSum. Print arr[idx] and complement to console.
Set variable isComplementFound to true.
Add arr[idx] to complementsHash.
|
| At completion of above loop, if isComplementFound is true then one or more pairs of integers that sum up to reqSum have been found in arr. If isComplementFound is false no pairs of integers that sum up to reqSum were found in arr. Return isComplementFound.
|
Below fully running code can be copied and run on Eclipse or other Java IDEs. Refer the classname in code below. If the class name below is "A", save the code below to a file named A.java before running it.
Be sure to try your own test cases to enhance your understanding !
You can also tweak the code to optimize or add enhancements and custom features.
import java.util.HashSet;
public class SetFindPairsWithSum {
public static void arrayFindPairsWithSum(int[] arr, int reqSum) throws Exception{
HashSet<Integer> complementsHash=new HashSet<Integer>();
int complement=0;
boolean isComplementFound=false;
for (int idx=0; idx < arr.length; idx++ ) {
complement=reqSum-arr[idx];
if (complementsHash.contains(complement)==true) {
System.out.println("\n Found pair that sum up to requiredSum : ["+
arr[idx]+","+complement+"]\n");
isComplementFound=true;
}
complementsHash.add(arr[idx]);
}
if (isComplementFound==false) {
System.out.println("\n No pair that sum up to requiredSum were found !\n");
}
}
public static void main(String[] args) {
try {
int[] intArray1 = {1,2,3,4,9,-3,0};
int requiredSum=3;
printArraySummary(intArray1, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray1, requiredSum);
int[] intArray2 = {9,-1,2,3,-1,-5};
requiredSum=-2;
printArraySummary(intArray2, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray2, requiredSum);
int[] intArray3 = {4,5,4};
requiredSum=9;
printArraySummary(intArray3, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray3, requiredSum);
int[] intArray4 = {0,0,0,0,0};
requiredSum=0;
printArraySummary(intArray4, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray4, requiredSum);
int[] intArray5 = {1};
requiredSum=1;
printArraySummary(intArray5, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray5, requiredSum);
int[] intArray6 = {1,-1,3};
requiredSum=3;
printArraySummary(intArray6, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray6, requiredSum);
int[] intArray7 = {1,3,5,7,3,5,1};
requiredSum=-2;
printArraySummary(intArray7, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray7, requiredSum);
int[] intArray8 = {1,3,5,7,9,11,13};
requiredSum=0;
printArraySummary(intArray8, "Original Array");
System.out.println("\n Required Sum : "+requiredSum +"\n");
arrayFindPairsWithSum(intArray8, requiredSum);
}catch (Exception exception) {
System.out.print("Exception: "+ exception);
}
}
public static void printArraySummary(int[] intArray, String label) throws Exception {
// Case 1: The input Array is null !!
if (intArray == null) { System.out.println("\n\n Input Array was null !! \n"); return; }
// Case 2: Print input Array by index (first to last)
System.out.println();
System.out.println("************************************************************************");
System.out.print(label+" : ");
int arrayIndex=0;
for (arrayIndex=0; arrayIndex< intArray.length; arrayIndex++) {
System.out.print(intArray[arrayIndex]);
if (arrayIndex< intArray.length-1) {System.out.print(",");}
}
System.out.println();
System.out.println("*************************************************************************");
System.out.println();
Thread.sleep(2000);
return;
}
}