The solution is the min absolute value of |(A[0] + … + A[D-1]) – (A[D] + … + A[N-1])| where A is an on-empty zero-indexed array A consisting of N integers.
Assumptions
- The range of the array size is [2..100,000];
- The rage of the elements of this array is [−1,000..1,000].
Example:
A[0] = 2 | A[1] = 3 | A[2] = 4
This array can be splited in two parts.
D = 1 – diff = |2 − 7| = 7
D = 2 – diff = |5 − 4| = 1
The result for it will be 1.
Solution
public int algo(int[] A) { int size = A.length; int result = Integer.MAX_VALUE; int sumLeft = 0; int sumRight = 0; for ( int i=0; i < size; i++ ) { sumRight += A[i]; } for ( int i=0; i < (size-1); i++ ) { sumLeft +=A[i]; sumRight -=A[i]; int diff = Math.abs(sumLeft - sumRight); if ( diff < result ) { result = diff; } } return result; }