Gas Station

来源:互联网 发布:华娱无线java 编辑:程序博客网 时间:2024/06/03 16:36

原题地址:点我传送

对这个圈做遍历,从该点出发,对每到一个点,计算剩余汽油量remain,如果remain小于0则说明不能往下走了,此时remain同时表示从出发点到这里的下一个点的汽油消耗量,要进行另外一次新的出发,出发点应是此时的点往后一个(即下一个点),因为中间肯定是行不通的。remainCost再加上此时的remain就是出发点0到这里的下一个点所消耗的总汽油量了。设定好新出发点(i+1)后还要重置remain才能继续遍历,如果遍历完到了最后一个点,测试此时的剩余汽油能不能完成前面没走的路程所需要的汽油即remainCost,即可得答案。

Java:

public class Solution {    public int canCompleteCircuit(int[] gas, int[] cost) {        int n = gas.length;        int remainCost = 0; // <0        int remain = 0;        int start = 0;        for(int i=0;i<n;i++)        {            remain+=gas[i]-cost[i];            if(remain<0)            {                remainCost += remain;                remain=0;                start = i + 1;            }        }        return remain+remainCost>=0?start:-1;    }}


0 0
原创粉丝点击