代码如下
func canCompleteCircuit(gas []int, cost []int) int {
totalsum,cursum,start := 0,0,0 //定义一个总和,一个当前和,一个起始位置
思路是如果当前和小于0 则说明从这个起始位置无法到达当前位置,则需要更换起始位置
for i := 0 ; i < len(gas) ; i++ {
cursum += (gas[i]-cost[i])
totalsum += (gas[i]-cost[i])
if cursum < 0 {
start = i+1
cursum = 0
}
}
if totalsum < 0 {
return -1
}
return start
}