134. 加油站
难度:Medium
掌握程度:Low
var canCompleteCircuit = function(gas, cost) {
let totalGas = 0;
let totalCost = 0;
for(let i = 0;i<gas.length;i++){
totalGas += gas[i];
totalCost += cost[i];
}
if(totalGas < totalCost){
return -1;
}
let currentGas = 0;
let start = 0;
for(let i=0;i<gas.length;i++){
currentGas = currentGas - cost[i] + gas[i];
// 如果发现现在的油量小于0了,我们就把这个点设置为起点
if(currentGas <0 ){
currentGas = 0;
// 在这里为什么是i+1呢,因为i=2一定是一个不成立的点,所以要从下一个点开始
start = i+1;
}
}
return start;
};
如果从1出发,到达2,油量是大于0的,这都不足以支撑它到4号
如果重新从2出发,油量是0,那就更不会到达4号了