10 Two Sum

Question

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

Naive Approach

Logic

Simply use two loops and check for every pair

Code
Complexity

Time Compleixty: O(n2)O(n^2)

Space Complexity: O(1)O(1)

Using `map`

Logic
  1. For each element(say a) there must be a b such that a + b = x

  2. Traverse the given array as a

    1. Since a + b = x

    2. b = x - a

    3. Check the map to see if b has already been found

    4. If found, return true

      1. As we have proven that the a and b necessary to make a + b = x are present in the array

    5. if not, add a to the map

      1. This will be used as b to make pair with some other a for next iterations.

Code
Complexity

Time Complexity: O(n)O(n)

Space Complexity: O(n)O(n)

Last updated