Check if each element of an Array is the Sum of any two elements of another Array Last Updated : 06 Jun, 2021 Comments Improve Suggest changes Like Article Like Report Given two arrays A[] and B[] consisting of N integers, the task is to check if each element of array B[] can be formed by adding any two elements of array A[]. If it is possible, then print “Yes”. Otherwise, print “No”. Examples: Input: A[] = {3, 5, 1, 4, 2}, B[] = {3, 4, 5, 6, 7} Output: Yes Explanation: B[0] = 3 = (1 + 2) = A[2] + A[4], B[1] = 4 = (1 + 3) = A[2] + A[0], B[2] = 5 = (3 + 2) = A[0] + A[4], B[3] = 6 = (2 + 4) = A[4] + A[3], B[4] = 7 = (3 + 4) = A[0] + A[3] Input: A[] = {1, 2, 3, 4, 5}, B[] = {1, 2, 3, 4, 5} Output: No Approach: Follow the steps below to solve the problem: Store each element of B[] in a Set.For each pair of indices (i, j) of the array A[], check if A[i] + A[j] is present in the set. If found to be true, remove A[i] + A[j] from the set.If the set becomes empty, then print “Yes”. Otherwise, print “No”. Below is the implementation of the above approach: C++ // C++ program to implement // the above approach #include using namespace std; // Function to check if each element // of B[] can be formed by adding two // elements of array A[] string checkPossible(int A[], int B[], int n) { // Store each element of B[] unordered_set values; for (int i = 0; i < n; i++) { values.insert(B[i]); } // Traverse all possible pairs of array for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // If A[i] + A[j] is present in // the set if (values.find(A[i] + A[j]) != values.end()) { // Remove A[i] + A[j] from the set values.erase(A[i] + A[j]); if (values.empty()) break; } } } // If set is empty if (values.size() == 0) return "Yes"; // Otherwise else return "No"; } // Driver Code int main() { int N = 5; int A[] = { 3, 5, 1, 4, 2 }; int B[] = { 3, 4, 5, 6, 7 }; cout << checkPossible(A, B, N); } Java // Java program to implement // the above approach import java.io.*; import java.util.*; class GFG{ // Function to check if each element // of B[] can be formed by adding two // elements of array A[] static String checkPossible(int A[], int B[], int n) { // Store each element of B[] Set values = new HashSet(); for(int i = 0; i < n; i++) { values.add(B[i]); } // Traverse all possible pairs of array for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { // If A[i] + A[j] is present in // the set if (values.contains(A[i] + A[j])) { // Remove A[i] + A[j] from the set values.remove(A[i] + A[j]); if (values.size() == 0) break; } } } // If set is empty if (values.size() == 0) return "Yes"; // Otherwise else return "No"; } // Driver Code public static void main(String args[]) { int N = 5; int A[] = { 3, 5, 1, 4, 2 }; int B[] = { 3, 4, 5, 6, 7 }; System.out.print(checkPossible(A, B, N)); } } // This code is contributed by offbeat Python3 # Python3 program to implement # the above approach # Function to check if each element # of B[] can be formed by adding two # elements of array A[] def checkPossible(A, B, n): # Store each element of B[] values = set([]) for i in range (n): values.add(B[i]) # Traverse all possible # pairs of array for i in range (n): for j in range (n): # If A[i] + A[j] is present in # the set if ((A[i] + A[j]) in values): # Remove A[i] + A[j] from the set values.remove(A[i] + A[j]) if (len(values) == 0): break # If set is empty if (len(values) == 0): return "Yes" # Otherwise else: return "No" # Driver Code if __name__ == "__main__": N = 5 A = [3, 5, 1, 4, 2] B = [3, 4, 5, 6, 7] print (checkPossible(A, B, N)) # This code is contributed by Chitranayal C# // C# program to implement // the above approach using System; using System.Collections.Generic; class GFG{ // Function to check if each element // of []B can be formed by adding two // elements of array []A static String checkPossible(int []A, int []B, int n) { // Store each element of []B HashSet values = new HashSet(); for(int i = 0; i < n; i++) { values.Add(B[i]); } // Traverse all possible pairs of array for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { // If A[i] + A[j] is present in // the set if (values.Contains(A[i] + A[j])) { // Remove A[i] + A[j] from the set values.Remove(A[i] + A[j]); if (values.Count == 0) break; } } } // If set is empty if (values.Count == 0) return "Yes"; // Otherwise else return "No"; } // Driver Code public static void Main(String []args) { int N = 5; int []A = {3, 5, 1, 4, 2}; int []B = {3, 4, 5, 6, 7}; Console.Write(checkPossible(A, B, N)); } } // This code is contributed by Amit Katiyar JavaScript <script> // Javascript program to implement // the above approach // Function to check if each element // of B[] can be formed by adding two // elements of array A[] function checkPossible(A, B, n) { // Store each element of B[] var values = new Set(); for(var i = 0; i < n; i++) { values.add(B[i]); } // Traverse all possible pairs of array for(var i = 0; i < n; i++) { for(var j = 0; j < n; j++) { // If A[i] + A[j] is present in // the set if (values.has(A[i] + A[j])) { // Remove A[i] + A[j] from the set values.delete(A[i] + A[j]); if (values.size == 0) break; } } } // If set is empty if (values.size == 0) return "Yes"; // Otherwise else return "No"; } // Driver Code var N = 5; var A = [ 3, 5, 1, 4, 2 ]; var B = [ 3, 4, 5, 6, 7 ]; document.write(checkPossible(A, B, N)); // This code is contributed by itsok </script> Output: Yes Time Complexity: O(N2) Auxiliary Space: O(N) Comment More infoAdvertise with us Next Article Check if each element of an Array is the Sum of any two elements of another Array jrishabh99 Follow Improve Article Tags : Misc Searching Mathematical Hash DSA Arrays HashSet cpp-set +4 More Practice Tags : ArraysHashMathematicalMiscSearching +1 More Similar Reads Sum of Bitwise AND of each array element with the elements of another array Given two arrays arr1[] of size M and arr2[] of size N, the task is to find the sum of bitwise AND of each element of arr1[] with the elements of the array arr2[]. Examples: Input: arr1[] = {1, 2, 3}, arr2[] = {1, 2, 3}, M = 3, N = 3Output: 2 4 6Explanation:For elements at index 0 in arr1[], Sum = a 11 min read Sum of Bitwise OR of each array element of an array with all elements of another array Given two arrays arr1[] of size M and arr2[] of size N, the task is to find the sum of bitwise OR of each element of arr1[] with every element of the array arr2[]. Examples: Input: arr1[] = {1, 2, 3}, arr2[] = {1, 2, 3}, M = 3, N = 3Output: 7 8 9Explanation: For arr[0]: Sum = arr1[0]|arr2[0] + arr1[ 11 min read Form an array of distinct elements with each element as sum of an element from each array Given two arrays, arr1[] and arr2[] of equal size, which contain distinct elements, the task is to find another array with distinct elements such that elements of the third array are formed by the addition of the one-one element of the arr1[] and arr2[]. Examples: Input: arr[] = {1, 7, 8, 3}, arr2[] 6 min read Find an element in array such that sum of left array is equal to sum of right array Given, an array of size n. Find an element that divides the array into two sub-arrays with equal sums. Examples: Input: 1 4 2 5 0Output: 2Explanation: If 2 is the partition, subarrays are : [1, 4] and [5] Input: 2 3 4 1 4 5Output: 1Explanation: If 1 is the partition, Subarrays are : [2, 3, 4] and [4 15+ min read Check if the array has an element which is equal to sum of all the remaining elements Given an array of N elements, the task is to check if the array has an element that is equal to the sum of all the remaining elements. Examples: Input: a[] = {5, 1, 2, 2} Output: Yes we can write 5=(1+2+2) Input: a[] = {2, 1, 2, 4, 3} Output: No Approach: Suppose that the total elements in the array 10 min read Modify array to another given array by replacing array elements with the sum of the array Given an array input[] consisting only of 1s initially and an array target[] of size N, the task is to check if the array input[] can be converted to target[] by replacing input[i] with the sum of array elements in each step. If found to be true, then print "YES". Otherwise, print "NO". Examples: In 13 min read Check if an array can be converted to another given array by swapping pairs of unequal elements Given two arrays arr1[] and arr2[] of size N, consisting of binary integers, the task is to check if arr1[] can be converted to arr2[] by swapping any pair of array elements (arr1[i], arr1[j]) such that i < j and arr1[i] is 1 and arr1[j] is 0 (any number of times). If it is possible to do so, the 11 min read Modify array to another given array by replacing array elements with the sum of the array | Set-2 Given an Array input[] consisting only of 1s initially and an array target[] of size N, the task is to check if the array input[] can be converted to target[] by replacing input[i] with the sum of array elements in each step. Examples: Input: input[] = { 1, 1, 1 }, target[] = { 9, 3, 5 } Output: YES 10 min read Find if array has an element whose value is half of array sum Given a sorted array (with unique entries), we have to find whether there exists an element(say X) that is exactly half the sum of all the elements of the array including X. Examples: Input : A = {1, 2, 3} Output : YES Sum of all the elements is 6 = 3*2; Input : A = {2, 4} Output : NO Sum of all the 10 min read Choose two elements from the given array such that their sum is not present in any of the arrays Given two arrays A[] and B[], the task is to choose two elements X and Y such that X belongs to A[] and Y belongs to B[] and (X + Y) must not be present in any of the array.Examples: Input: A[] = {3, 2, 2}, B[] = {1, 5, 7, 7, 9} Output: 3 9 3 + 9 = 12 and 12 is not present in any of the given arrays 5 min read Like