Find Four Elements That Sums To A Given Value

Moderate
0/80
Average time to solve is 10m
profile
Contributed by
136 upvotes
Asked in companies
AmazonOYOHCL Technologies

Problem statement

You are given an array/list 'ARR' of ‘N’ integers and an integer value ‘TARGET’. You need to check whether there exist four numbers (ARR[i], ARR[j], ARR[k], ARR[l]) such that (0 <= i < j < k < l < N) and ARR[i] + ARR[j] + ARR[k] + ARR[l] = 'TARGET'.

Note:
1. All four numbers should exist at different indices in the given array.
2. The answer is case-sensitive.
Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line of the input contains an integer ‘T’ denoting the number of test cases.

The first line of each test case contains two space-separated integers ‘N’ and ‘TARGET’ denoting the number of the elements present in the sequence and the target sum respectively.

The second line of each test case contains ‘N’ space-separated integers denoting the elements of the array 'ARR'.
Output Format:
The only line of output of each test case should contain  “Yes” (without quotes) if there exist 4 numbers (having different indices) that give sum ‘TARGET’ else “No” (without quotes).
Note:
You don't need to print anything, it has already been taken care of. Just implement the given function.
Constraints:
1 <= T <= 10^2
4 <= N <= 2*10^2   
-10^9 <= ARR[i] <= 10^9
-10^9 <= TARGET<= 10^9 

Time Limit: 1 sec

Follow Up:

Can you try solving the problem with less than O(N^2 * log(N)) time complexity?
Sample Input 1:
2
5 9
1 3 3 10 2
6 20
2 4 6 3 1 1
Sample Output 1:
Yes
No
Explanation For Sample Input 1:
Test case 1:
The elements at indices (0, 1, 2, 4) gives sum 9 i.e, ARR[0] + ARR[1] + ARR[2] + ARR[4] = 9. Hence the answer is Yes.

Test case 2:
None of the combinations of 4 numbers gives 20 as 'TARGET'. Hence the answer is No.  
Sample Input 2:
2
5 15
0 10 1 2 2
6 20
-2 12 -1 1 20 1 
Sample Output 2:
Yes
Yes
Hint

Try checking all the combinations of quadruples.

Approaches (4)
Brute Force
  1. We will check the sum of every possible combination of four indices using 4 nested loops.
  2. If the sum is equal to the ‘target’ that means we found our quadruple. So, we return true in this case else we simply return false.
Time Complexity

O(N^4), where ‘N’ is the number of elements present in the array.

As we ran 4 nested loops till ‘N’ in each loop.

Space Complexity

O(1), as we are using constant space.

Code Solution
(100% EXP penalty)
Find Four Elements That Sums To A Given Value
Full screen
Console