沿着循环路线有N个加油站,其中i站的天然气量是[i]。你有一辆带有无限气罐的汽车,并且它的费用是从i站到我的下一站(i + 1).如果您可以绕电路行驶一次,则返回起始站索引

本题源自LeetCode

=--------------------------------------------------------------------------------------

1 定一个起始站start

2 如果油量充足就向前走 end++  否则就倒退一站。

3 记录每站的消耗,不浪费已经遍历过的

从尾开始


    int canCompleteCircuit(vector &gas, vector &cost) {
        int start=gas.size()-1;
        int end=0;
        int sum=gas[start]-cost[start];
        while(start>end){
            if(sum>=0){
                //可以向前走
                sum+=gas[end]-cost[end];
                end++;
            }else{
                start--;
                sum+=gas[start]-cost[start];
            }
        }
        return sum>=0 ? start:-1;
    }

从头开始

    int canCompleteCircuit(vector &gas, vector &cost) {
        int len=gas.size();
        int remain=0;
        int sum=0;
        int index=0;
        for(int i=0;i=0 ? index:-1;
    }


你可能感兴趣的:(C++,leetcode,算法)