题目描述:(取自LeetCode)
一种依据题意的直接解法:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
vector<int>x;//记录每个站点花费和油量的差值
int num=0;
for(int i=0;i<gas.size();i++){//计算差值
num+=gas[i]-cost[i];
x.push_back(gas[i]-cost[i]);
}
if(num<0)return -1;
int num_1=0,maxi=-1;
for(int i=0;i<gas.size();i++){//对每个元素进行遍历看是否能走通
if(x[i]>0){
int j=i+1;
if(j==gas.size())j=0;
num=x[i];
bool isok=true;
while(j!=i){//遍历过程
num+=x[j];
if(num<0){isok=false;break;}
j++;
if(j==gas.size())j=0;
}
if(isok)return i;
}
}
return 0;
}