Two-Pointer Method: FInd Target Sum in Sorted Array¶
/*
* Motivation Problem: Given a sorted array A having N integers.
* You need to find any pair (i,j) having sum as given number X.
*/
class sum2numbers {
public static boolean sumX(int[] arr, long X) {
int left = 0;
int right = arr.length-1;
while (left<right) {
if (arr[left] + arr[right] == X) return true;
else if (arr[left] + arr[right] > X) right--;
else left++;
}
return false;
}
public static void main(String args[]) {
int arr[] = {99,2,4,5,7,8,20};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
for (int i=5;i<12;i++) {
System.out.println("Target sum " + i + " exists:\t" + sumX(arr,i));
}
}
}
[2, 4, 5, 7, 8, 20, 99] Target sum 5 exists: false Target sum 6 exists: true Target sum 7 exists: true Target sum 8 exists: false Target sum 9 exists: true Target sum 10 exists: true Target sum 11 exists: true