本文最后更新于608 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
https://programmercarl.com/0134.%E5%8A%A0%E6%B2%B9%E7%AB%99.html
1.本题思路为检查每一个加油站剩余油量的值,通过判断哪一段的余量和<0更新起始下标为i + 1这样可以保证可以循环下去。一个问题是找到新的起始点之后要将curSum置为0,另一个是统计总和的时候不能直接+= curSum因为curSum会被置为0。
CPP
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int curSum = 0;
int totalSum = 0;
int start = 0;
for(int i = 0; i < gas.size(); i++){
curSum += gas[i] - cost[i];
totalSum += gas[i] - cost[i];
if(curSum < 0){
start = i + 1;
curSum = 0;
}
}
if(totalSum < 0){
return -1;
}
return start;
}
};