十七
十七
Published on 2022-03-17 / 147 Visits
0
0

leetcode134. 加油站

leetcode134. 加油站

分析

i从第一个加油站开始模拟,如果j回到了i处,说明满足条件,如果j<i说明j到达了i之前的位置,那么此时j->i不可达,那么直接返回-1,如果j>i说明i->j是可以到达的,直接更新i到j。

class Solution {
public:   
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
        int n=gas.size();
        for(int i=0;i<n;i++){
           int j=i;
           int cur=gas[j];
           while(cur>=cost[j]){
               cur=cur-cost[j]+gas[(j+1)%n];
               j=(j+1)%n;
               if(j==i)return i;
           }
           if(i>j)return -1;
           i=j;
        }
        return -1;
    }
};

Comment