# Find the overlapping sum of two arrays

Given two arrays A[] and B[] having n unique elements each. The task is to find the overlapping sum of the two arrays. That is the sum of elements which is common in both of the arrays.

**Note**: Elements in the arrays are unique. That is the array does not contains duplicates.

Examples:

Input: A[] = {1, 5, 3, 8} B[] = {5, 4, 6, 7}Output: 10Explanation: The element which is common in both arrays is 5. Therefore, the overlapping sum will be (5+5) = 10Input: A[] = {1, 5, 3, 8} B[] = {5, 1, 8, 3}Output: 99

**Brute Force Method : **The simple approach is that for each element in A[] check whether it is present in B[] and if it is present in B[] then add that number two times(once for A[] and once for B[]) to the sum. Repeat this procedure for all elements in the array A[].

Time Complexity: O(n^2).

**Efficient Method : **An efficient method is to use Hashing. Traverse both of the arrays and insert the elements into a hash table to keep track of the count of elements. Add the elements to sum whose count equals to two.

Below is the implementation of above approach:

## CPP

`// CPP program to find overlapping sum ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function for calculating ` `// overlapping sum of two array ` `int` `findSum(` `int` `A[], ` `int` `B[], ` `int` `n) ` `{ ` ` ` `// unordered map to store count of ` ` ` `// elements ` ` ` `unordered_map<` `int` `,` `int` `> hash; ` ` ` ` ` `// insert elements of A[] into ` ` ` `// unordered_map ` ` ` `for` `(` `int` `i=0;i<n;i++) ` ` ` `{ ` ` ` `if` `(hash.find(A[i])==hash.end()) ` ` ` `{ ` ` ` `hash.insert(make_pair(A[i],1)); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `hash[A[i]]++; ` ` ` `} ` ` ` `} ` ` ` ` ` `// insert elements of B[] into ` ` ` `// unordered_map ` ` ` `for` `(` `int` `i=0;i<n;i++) ` ` ` `{ ` ` ` `if` `(hash.find(B[i])==hash.end()) ` ` ` `{ ` ` ` `hash.insert(make_pair(B[i],1)); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `hash[B[i]]++; ` ` ` `} ` ` ` `} ` ` ` ` ` `// calculate overlapped sum ` ` ` `int` `sum = 0; ` ` ` `for` `(` `auto` `itr = hash.begin(); itr!=hash.end(); itr++) ` ` ` `{ ` ` ` `if` `((itr->second)==2) ` ` ` `{ ` ` ` `sum += (itr->first)*2; ` ` ` `} ` ` ` `} ` ` ` ` ` `return` `sum; ` `} ` ` ` `// driver code ` `int` `main() ` `{ ` ` ` `int` `A[] = { 5, 4, 9, 2, 3 }; ` ` ` `int` `B[] = { 2, 8, 7, 6, 3 }; ` ` ` ` ` `// size of array ` ` ` `int` `n = ` `sizeof` `(A) / ` `sizeof` `(A[0]); ` ` ` ` ` `// function call ` ` ` `cout << findSum(A, B, n); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Python

`# Python3 program to find overlapping sum ` ` ` `# Function for calculating ` `# overlapping sum of two array ` `def` `findSum(A, B, n): ` ` ` ` ` `# unordered map to store count of ` ` ` `# elements ` ` ` `hash` `=` `dict` `() ` ` ` ` ` `# insert elements of A into ` ` ` `# unordered_map ` ` ` `for` `i ` `in` `range` `(n): ` ` ` `hash` `[A[i]] ` `=` `hash` `.get(A[i], ` `0` `) ` `+` `1` ` ` ` ` `# insert elements of B into ` ` ` `# unordered_map ` ` ` `for` `i ` `in` `range` `(n): ` ` ` `hash` `[B[i]] ` `=` `hash` `.get(B[i], ` `0` `) ` `+` `1` ` ` ` ` ` ` `# calculate overlapped sum ` ` ` `sum` `=` `0` ` ` ` ` `for` `i ` `in` `hash` `: ` ` ` `if` `hash` `[i] ` `=` `=` `2` `: ` ` ` `sum` `+` `=` `i ` `*` `2` ` ` ` ` `return` `sum` ` ` `# Driver code ` ` ` `A ` `=` `[ ` `5` `, ` `4` `, ` `9` `, ` `2` `, ` `3` `] ` `B ` `=` `[ ` `2` `, ` `8` `, ` `7` `, ` `6` `, ` `3` `] ` ` ` `# size of array ` `n ` `=` `len` `(A) ` ` ` `# function call ` `print` `(findSum(A, B, n)) ` ` ` `# This code is contributed by mohit kumar 29 ` |

*chevron_right*

*filter_none*

**Output:**

10

**Time Complexity**: O(n)

**Auxiliary Space**: O(n)

This article is contributed by **Shivam Pradhan (anuj_charm)**. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

## Recommended Posts:

- K maximum sums of overlapping contiguous sub-arrays
- K maximum sums of non-overlapping contiguous sub-arrays
- Maximise array sum after taking non-overlapping sub-arrays of length K
- Find two non-overlapping pairs having equal sum in an Array
- Find sub-arrays from given two arrays such that they have equal sum
- Non-overlapping sum of two sets
- Merge Overlapping Intervals
- Max sum of M non-overlapping subarrays of size K
- Maximum sum two non-overlapping subarrays of given size
- Find three element from given three arrays such that their sum is X | Set 2
- Find bitwise AND (&) of all possible sub-arrays
- Find bitwise OR of all possible sub-arrays
- Find three element from different three arrays such that a + b + c = sum
- Maximum sum of non-overlapping subarrays of length atmost K
- Maximum number of elements without overlapping in a Line