class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
//我只需要找到总体加起来是大于等于0的就确定我可以到达
//所以我只需要确定我当前的一个start到最后还大于零的一个下标
int start = 0;
int remain = 0;
bool flag = true;//用于更新开始标志
int sum = 0;
for (int i = 0; i < gas.size(); ++i) {
remain += gas[i] - cost[i];//用于获得当前的剩余部分
sum += gas[i] - cost[i];//用于总体计数,总体只要大于等于0,那么一定能够有个loop
if (!flag && remain >= 0) {
start = i;
flag = true;
}
if (remain < 0) {
flag = false;
remain = 0;
}
}
if (sum < 0) {
return -1;
}
return start;
}
};
leetcode 134. 加油站
最新推荐文章于 2024-07-12 18:12:33 发布