一:论语
二:题目
三:上码(暴力解法超时 但方法二还是可以的)
// class Solution {
// public:
// int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
// /**
// 思路:1.暴力解法,我们遍历所有的元素 直到可以成功为止 否则返回-1;
// */
// for(int i = 0; i < gas.size(); i++) {
// int num1 = gas[i] - cost[i];
// int index = (i+1) % cost.size();//这里我们用此来实现我们的环周一圈 index表示数组下标// while(num1 > 0 && index != i) {
// num1 += gas[index] - cost[index];
// index = (index+1) % cost.size();//当index+1 == cost.size()的时候 我们就回到了0起始点
// }// if(num1 >= 0 && index == i) return i;
// }// return -1;
// }
// };class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {/**思路:1.如果我们的总油量大于消耗的油量 我们肯定可以是环绕一圈*/int cur = 0;int sum = 0;int start = 0;for(int i = 0; i < gas.size(); i++) {cur += gas[i] -cost[i];sum += gas[i] -cost[i];if(cur < 0) {//当我们统计到 i 的时候 如果油量是负数的话,我们可以肯定的是不会环绕一圈start = i+1;cur = 0;}} if(sum < 0) return -1;return start;}
};