Drill

ProblemsGo › data

The imbalance across a split

mediumdataPrefix sumsArraysGo

A load balancer divides a batch at one index and wants the difference between the two halves.

splitImbalance(values: list<int>, at: int) → int

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func splitImbalance(values []int, at int) int {
	
}

Worked examples

CallResult
splitImbalance([]int{1, 2, 3, 4}, 2)-4
splitImbalance([]int{5, 3, 8}, 1)-6
splitImbalance([]int{1, 2, 3}, 0)-6
splitImbalance([]int{1, 2, 3}, 3)6

Hint

Handle the out-of-range slices first, then sum each side and subtract.

Reference solution in Go
func splitImbalance(values []int, at int) int {
	total := 0
	for _, v := range values {
		total += v
	}
	if at <= 0 {
		return -total
	}
	if at >= len(values) {
		return total
	}
	left := 0
	for i := 0; i < at; i++ {
		left += values[i]
	}
	right := 0
	for i := at; i < len(values); i++ {
		right += values[i]
	}
	return left - right
}

The same problem in another language

More data problems in Go