重点在于用gas[i]-cost[i]构建新数组,再找关系。在新数组里面,只要前面的和小于0,必然只能选择下一个坐标作为起点。
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int n=gas.size(),csum=0,tsum=0,start=0;
for(int i=0;i<n;++i){
tsum += gas[i] - cost[i];
csum += gas[i] - cost[i];
if(csum<0){
csum = 0;
start = i+1;
}
}
if(tsum<0) return -1;
return start;
}
};