Skip to main content

Balanced Array

Problem​

Given an array of even size N, task is to find minimum value that can be added to an element so that array become balanced. An array is balanced if the sum of the left half of the array elements is equal to the sum of right half.

Examples:​

Example 1:

Input:
N = 4
arr[] = {1, 5, 3, 2}
Output: 1
Explanation:
Sum of first 2 elements is 1 + 5 = 6,
Sum of last 2 elements is 3 + 2 = 5,
To make the array balanced you can add 1.

Example 2:

Input:
N = 6
arr[] = { 1, 2, 1, 2, 1, 3 }
Output: 2
Explanation:
Sum of first 3 elements is 1 + 2 + 1 = 4,
Sum of last three elements is 2 + 1 + 3 = 6,
To make the array balanced you can add 2.

Your task:​

You don't need to read input or print anything. Your task is to complete the function minValueToBalance() which takes the array a[] and N as inputs and returns the desired result.

  • Expected Time Complexity: O(N)O(N)
  • Expected Auxiliary Space: O(1)O(1)

Constraints:​

  • 2<=N<=1072<=N<=10^7
  • N%2==0N\%2==0

Solution​

Python​

def minValueToBalance(self,a,n):
sum1 = 0
for i in range( int(n / 2)):
sum1 += a[i]
sum2 = 0;
i = int(n / 2)
while i < n:
sum2 += a[i]
i = i + 1
return abs(sum1 - sum2)

Java​

long minValueToBalance(long a[] ,int n) {
long sum1 = 0;
for (int i = 0; i < n / 2; i++)
sum1 += a[i];
long sum2 = 0;
for (int i = n/2; i < n; i++)
sum2 += a[i];
return Math.abs(sum1 - sum2);

}

C++​

int minValueToBalance(int a[], int n) {
int sum1 = 0;
for (int i = 0; i < n/2; i++)
sum1 += a[i];
int sum2 = 0;
for (int i = n/2; i < n; i++)
sum2 += a[i];
return abs(sum1 - sum2);
}

C​

int minValueToBalance(int a[], int n) {
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < n / 2; i++) {
sum1 += a[i];
}
for (int i = n / 2; i < n; i++) {
sum2 += a[i];
}
int balanceValue = abs(sum1 - sum2);
return balanceValue;
}
  • Time Complexity: O(N)O(N)
  • Auxiliary Space: O(1)O(1)