Key Pair

Tags : geeksforgeeks, 2pointers, java, easy

Given an array Arr of N positive integers and another number X. Determine whether or not there exist two elements in Arr whose sum is exactly X.

Your Task:

You don’t need to read input or print anything. Your task is to complete the function hasArrayTwoCandidates() which takes the array of integers arr, n and x as parameters and returns a boolean denoting the answer.

Expected Time Complexity: O(N)
Expected Auxiliary Space: O(N)

Examples #

Example 1:

Input:
N = 6, X = 16
Arr[] = {1, 4, 45, 6, 10, 8}
Output: Yes
Explanation: Arr[3] + Arr[4] = 6 + 10 = 16

Example 2:

Input:
N = 5, X = 10
Arr[] = {1, 2, 4, 3, 6}
Output: Yes
Explanation: Arr[2] + Arr[4] = 4 + 6 = 10

Constraints #

Solutions #


class Solution {
  public:
    boolean hasArrayTwoCandidates(int arr[], int n, int x) {
        // code here
        Arrays.sort(arr);
        int i=0;
        int j=n-1;
        while (i<j) {
            if (arr[i]+arr[j] == x) {
                return true;
            }
            if (arr[i]+arr[j] < x) {
                i++;
            }
            if (arr[i]+arr[j] > x) {
                j--;
            }
        }
        return false;
    }
};