Problems › JavaScript › data
The imbalance across a split
A load balancer divides a batch at one index and wants the difference between the two halves.
- Sum the values strictly left of `at`, and the values from `at` onward inclusive.
- The answer is the left sum minus the right sum.
- A cut at or before the start takes all the weight as the right side: negate the whole sum.
- A cut at or past the end leaves everything on the left: just the whole sum.
splitImbalance(values: list<int>, at: int) → int
Where you start
function splitImbalance(values, at) {
}
Worked examples
| Call | Result |
|---|---|
splitImbalance([1,2,3,4], 2) | -4 |
splitImbalance([5,3,8], 1) | -6 |
splitImbalance([1,2,3], 0) | -6 |
splitImbalance([1,2,3], 3) | 6 |
Hint
Handle the out-of-range slices first, then sum each side and subtract.
Reference solution in JavaScript
function splitImbalance(values, at) {
const total = values.reduce((a, b) => a + b, 0);
if (at <= 0) return -total;
if (at >= values.length) return total;
let left = 0;
for (let i = 0; i < at; i++) left += values[i];
let right = 0;
for (let i = at; i < values.length; i++) right += values[i];
return left - right;
}