# 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 which 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 is **N**. Now, if there exists any such element such that the element is equal to the sum of remaining elements then it can be said that the array can be divided into two halves with equal sum such that one half has only one element with value sum/2.

Also, since both halves have equal sum, the overall sum of the array must be even as we know that:

- ODD + ODD = EVEN
- EVEN + EVEN = EVEN

**Algorithm**:

- Iterate over the array, and count the occurrence of all the elements and store in a map. Also summate the array elements.
- The condition given in the problem is only possible when the below conditions are met.
- Total Sum of the array is even
- sum/2 occurrence in the array should be equal to atleast 1.

- If the above conditions are not met, hence it is not possible to remove any such element.

Below is the implementation of the above approach:

## C++

`// C++ program to Check if the array` `// has an element which is equal to sum` `// of all the remaining elements` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to check if such element exists or not` `bool` `isExists(` `int` `a[], ` `int` `n)` `{` ` ` `// Storing frequency in map` ` ` `unordered_map<` `int` `, ` `int` `> freq;` ` ` `// Stores the sum` ` ` `int` `sum = 0;` ` ` `// Traverse the array and count the` ` ` `// array elements` ` ` `for` `(` `int` `i = 0; i < n; i++) {` ` ` `freq[a[i]]++;` ` ` `sum += a[i];` ` ` `}` ` ` `// Only possible if sum is even` ` ` `if` `(sum % 2 == 0) {` ` ` `// If half sum is available` ` ` `if` `(freq[sum / 2])` ` ` `return` `true` `;` ` ` `}` ` ` `return` `false` `;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `a[] = { 5, 1, 2, 2 };` ` ` `int` `n = ` `sizeof` `(a) / ` `sizeof` `(a[0]);` ` ` `if` `(isExists(a, n))` ` ` `cout << ` `"Yes"` `;` ` ` `else` ` ` `cout << ` `"No"` `;` ` ` `return` `0;` `}` |

## Java

`// Java program to Check if the array` `// has an element which is equal to sum` `// of all the remaining elements` `import` `java.util.*;` `class` `Solution{` `// Function to check if such element exists or not` `static` `boolean` `isExists(` `int` `a[], ` `int` `n)` `{` ` ` `// Storing frequency in map` ` ` `Map<Integer, Integer> freq= ` `new` `HashMap<Integer, Integer>();` ` ` ` ` `// Stores the sum` ` ` `int` `sum = ` `0` `;` ` ` ` ` `// Traverse the array and count the` ` ` `// array elements` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++) {` ` ` `freq.put(a[i],freq.get(a[i])==` `null` `?` `0` `:freq.get(a[i])+` `1` `);` ` ` `sum += a[i];` ` ` `}` ` ` ` ` `// Only possible if sum is even` ` ` `if` `(sum % ` `2` `== ` `0` `) {` ` ` `// If half sum is available` ` ` `if` `(freq.get(sum / ` `2` `)!=` `null` `)` ` ` `return` `true` `;` ` ` `}` ` ` ` ` `return` `false` `;` `}` ` ` `// Driver code` `public` `static` `void` `main(String args[])` `{` ` ` `int` `a[] = { ` `5` `, ` `1` `, ` `2` `, ` `2` `};` ` ` ` ` `int` `n = a.length;` ` ` ` ` `if` `(isExists(a, n))` ` ` `System.out.println( ` `"Yes"` `);` ` ` `else` ` ` `System.out.println( ` `"No"` `);` ` ` `}` `}` `//contributed by Arnab Kundu` |

## Python3

`# Python3 code to check if the array has` `# an element which is equal to sum of all` `# the remaining elements` `# function to check if such element` `# exists or not` `def` `isExists(a, n):` ` ` ` ` `# storing frequency in dict` ` ` `freq ` `=` `{i : ` `0` `for` `i ` `in` `a}` ` ` ` ` `#stores the sum` ` ` `Sum` `=` `0` ` ` ` ` `# traverse the array and count` ` ` `# the array element` ` ` `for` `i ` `in` `range` `(n):` ` ` `freq[a[i]] ` `+` `=` `1` ` ` `Sum` `+` `=` `a[i]` ` ` ` ` `# Only possible if sum is even` ` ` `if` `Sum` `%` `2` `=` `=` `0` `:` ` ` ` ` `#if half sum is available` ` ` `if` `freq[` `Sum` `/` `/` `2` `]:` ` ` `return` `True` ` ` `return` `False` ` ` `# Driver code` `a ` `=` `[` `5` `, ` `1` `, ` `2` `, ` `2` `]` `n ` `=` `len` `(a)` `if` `isExists(a, n):` ` ` `print` `(` `"Yes"` `)` `else` `:` ` ` `print` `(` `"No"` `)` `# This code is contributed` `# by Mohit Kumar` |

## C#

`// C# program to Check if the array` `// has an element which is equal to sum` `// of all the remaining elements` `using` `System;` `using` `System.Collections.Generic;` ` ` `class` `Solution` `{` `// Function to check if such element exists or not` `static` `Boolean isExists(` `int` `[]arr, ` `int` `n)` `{` ` ` `// Storing frequency in map` ` ` `Dictionary<` `int` `, ` `int` `> m = ` `new` `Dictionary<` `int` `, ` `int` `>();` ` ` ` ` `// Stores the sum` ` ` `int` `sum = 0;` ` ` ` ` `// Traverse the array and count the` ` ` `// array elements` ` ` `for` `(` `int` `i = 0; i < n; i++)` ` ` `{` ` ` `if` `(m.ContainsKey(arr[i]))` ` ` `{` ` ` `var` `val = m[arr[i]];` ` ` `m.Remove(arr[i]);` ` ` `m.Add(arr[i], val + 1);` ` ` `}` ` ` `else` ` ` `{` ` ` `m.Add(arr[i], 1);` ` ` `}` ` ` `sum += arr[i];` ` ` `}` ` ` ` ` `// Only possible if sum is even` ` ` `if` `(sum % 2 == 0)` ` ` `{` ` ` `// If half sum is available` ` ` `if` `(m[sum / 2] != 0)` ` ` `return` `true` `;` ` ` `}` ` ` ` ` `return` `false` `;` `}` ` ` `// Driver code` `public` `static` `void` `Main()` `{` ` ` `int` `[]a = { 5, 1, 2, 2 };` ` ` ` ` `int` `n = a.Length;` ` ` ` ` `if` `(isExists(a, n))` ` ` `Console.WriteLine( ` `"Yes"` `);` ` ` `else` ` ` `Console.WriteLine( ` `"No"` `);` `}` `}` `/* This code contributed by PrinciRaj1992 */` |

## Javascript

`<script>` `// JavaScript program to Check if the array` `// has an element which is equal to sum` `// of all the remaining elements` `// Function to check if such element exists or not` `function` `isExists(a, n)` `{` ` ` `// Storing frequency in map` ` ` `let freq= ` `new` `Map();` ` ` ` ` `// Stores the sum` ` ` `let sum = 0;` ` ` ` ` `// Traverse the array and count the` ` ` `// array elements` ` ` `for` `(let i = 0; i < n; i++) {` ` ` `freq.set(a[i],freq.get(a[i])==` `null` `?0:freq.get(a[i])+1);` ` ` `sum += a[i];` ` ` `}` ` ` ` ` `// Only possible if sum is even` ` ` `if` `(sum % 2 == 0) {` ` ` `// If half sum is available` ` ` `if` `(freq.get(sum / 2)!=` `null` `)` ` ` `return` `true` `;` ` ` `}` ` ` ` ` `return` `false` `;` `}` ` ` `// Driver Code` ` ` `let a = [ 5, 1, 2, 2 ];` ` ` ` ` `let n = a.length;` ` ` ` ` `if` `(isExists(a, n))` ` ` `document.write( ` `"Yes"` `);` ` ` `else` ` ` `document.write( ` `"No"` `);` ` ` `</script>` |

**Output:**

Yes

**Time Complexity:** O(N * log N) **Auxiliary Space:** O(N)**Another Approach:** Calculate total = sum of all the elements in the array. Then run a FOR-loop to check if each element * 2 == total. If any such element is found, return True, else False at the end of the loop. Time complexity = O(N), space complexity = O(1).