23 lines
468 B
Go
23 lines
468 B
Go
package q134
|
|
|
|
func canCompleteCircuit(gas []int, cost []int) int {
|
|
invalidated := 0
|
|
start, current, tank := 0, 0, 0
|
|
|
|
for {
|
|
tank = tank + gas[current] - cost[current]
|
|
current = (current + 1) % len(gas)
|
|
if tank < 0 {
|
|
invalidated += (current - start + len(gas)) % len(gas)
|
|
if invalidated >= len(gas) || current == start {
|
|
return -1
|
|
}
|
|
start = current
|
|
tank = 0
|
|
} else if current == start {
|
|
return start
|
|
}
|
|
}
|
|
}
|
|
|
|
var _ = canCompleteCircuit
|