加油站
Question
在一条环路上有 n
个加油站,其中第 i
个加油站有汽油gas[i]
升。
你有一辆油箱容量无限的的汽车,从第 i
个加油站开往第i+1
个加油站需要消耗汽油cost[i]
升。你从其中的一个加油站出发,开始时油箱为空。
给定两个整数数组 gas
和 cost
,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1
。如果存在解,则 保证 它是 唯一 的。

思路
如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明 各个站点的加油站 剩油量rest[i]
相加一定是大于等于零的。
每个加油站的剩余量rest[i]
为gas[i] - cost[i]
。
i从0开始累加rest[i]
,和记为curSum
,一旦curSum
小于零,说明[0, i]
区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1
算起,再从0
计算curSum
。
js
var canCompleteCircuit = function(gas, cost) {
let res = 0
let totalsum = 0
let cursum = 0
for(let i=0; i<gas.length; i++){ // 求出经过 i 站之后剩余油量`
totalsum += gas[i] - cost[i]
cursum += gas[i] - cost[i]
if(cursum<0) {
res = i+1
cursum = 0
}
console.log(cursum,i)
}
if(totalsum < 0) return -1
return res
};