10 Two Sum
Last updated
Last updated
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.
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
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 boolean denoting the answer.
Expected Time Complexity: O(N) Expected Auxiliary Space: O(N)
Constraints: 1 โค N โค 105 1 โค Arr[i] โค 105
bool hasArrayTwoCandidates(int arr[], int n, int x) {
for(int i = 0; i < n; i++)
for(int j = i + 1; j < n; j++)
if(arr[i] + arr[j] == x)
return true;
return false;
}
For each element(say a
) there must be a b
such that a + b = x
Traverse the given array as a
Since a + b = x
b = x - a
Check the map to see if b
has already been found
If found, return true
As we have proven that the a
and b
necessary to make a + b = x
are present in the array
if not, add a
to the map
This will be used as b
to make pair with some other a
for next iterations.