示例代码
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int curSum=0,totalSum=0,len=gas.size(),rest=0,start=0;
//局部最优:当前累加rest[i]的和curSum一旦小于0,其实位置至少要是i+1,因为从i之间开始一定不行
//全局最优:找到可以跑一圈的起始位置
for(int i=0;i<len;i++){
rest=gas[i]-cost[i];
curSum+=rest;
totalSum+=rest;
if(curSum<0){
curSum=0;
start=i+1;
}
}
if(totalSum<0){
return -1;
}
return start;
}
};
效果展示