题目:https://leetcode.com/problems/gas-station/
解析:需要保证在gas[i]-cost[i]>0,如果小于0则当前index不可用。
如果计算当前index前的费用总和res,以及当前大于0费用sum。
当前费用sum小于0时,计算累计费用res,且start的index后移。
最后计算当前累计sum+res的和,若大于等于0,则可实现环路。
代码实现:
public int canCompleteCircuit(int[] gas, int[] cost) {
int start = 0,res = 0,sum = 0;
for(int i=0;i<gas.length;i++){
sum += gas[i]-cost[i];
if(sum<0){
start =i+1;
res +=sum;
sum = 0;
}
}
return sum + res >= 0?start:-1;
}
网友评论