LeetCode134(2020-7-17)

2020-07-17  本文已影响0人  xujiadai

题目: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;
    }
上一篇 下一篇

猜你喜欢

热点阅读