| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | package main// It is toooo slowfunc canCompleteCircuitOld(gas []int, cost []int) int {	length := len(gas)	for beg := 0; beg < length; beg++ {		curr := (beg + 1) % length		gasLeft := gas[beg] - cost[beg]		for gasLeft >= 0 {			if curr == beg {				return curr			}			gasLeft += gas[curr] - cost[curr]			curr = (curr + 1) % length		}	}	return -1}// If car starts at A and can not reach B. Any station between A and B// can not reach B. (B is the first station that A can not reach.)// If the total number of gas is bigger than the total number of cost.// There must be a solution.func canCompleteCircuit(gas []int, cost []int) int {	var total, sum, beg int	for i := 0; i < len(gas); i++ {		total += gas[i] - cost[i]		sum += gas[i] - cost[i]		if sum < 0 {			beg = i + 1			sum = 0		}	}	if total < 0 {		return -1	}	return beg}// func main() {// 	println(canCompleteCircuit(// 		[]int{1, 2, 3, 4, 5},// 		[]int{3, 4, 5, 1, 2}))// }
 |