Hackerrank - Sherlock and Array Solution
Watson gives Sherlock an array of integers. His challenge is to find an element of the array such that the sum of all elements to the left is equal to the sum of all elements to the right. For instance, given the array , is between two subarrays that sum to . If your starting array is , that element satisfies the rule as left and right sum to .
You will be given arrays of integers and must determine whether there is an element that meets the criterion.
Function Description
Complete the balancedSums function in the editor below. It should return a string, either YES
if there is an element meeting the criterion or NO
otherwise.
balancedSums has the following parameter(s):
- arr: an array of integers
Input Format
The first line contains , the number of test cases.
The next pairs of lines each represent a test case.
- The first line contains , the number of elements in the array .
- The second line contains space-separated integers where .
Constraints
Output Format
For each test case print YES
if there exists an element in the array, such that the sum of the elements on its left is equal to the sum of the elements on its right; otherwise print NO
.
Sample Input 0
2
3
1 2 3
4
1 2 3 3
Sample Output 0
NO
YES
Explanation 0
For the first test case, no such index exists.
For the second test case, , therefore index satisfies the given conditions.
Sample Input 1
3
5
1 1 4 1 1
4
2 0 0 0
4
0 0 2 0
Sample Output 1
YES
YES
YES
Explanation 1
In the first test case, is between two subarrays summing to .
In the second case, is between two subarrays summing to .
In the third case, is between two subarrays summing to .
Solution in Python
def balancedSums(arr):
tot = sum(arr)
add = 0
for i in arr:
if add == tot-i-add:
return "YES"
add+=i
return "NO"
for _ in range(int(input())):
input()
arr = list(map(int,input().split()))
print(balancedSums(arr))