Saturday, January 27, 2018

Two Pointer Method: Target Sum

Java Target Sum in Sorted Array

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