134. 加油站
1 class Solution 2 { 3 public: 4 int canCompleteCircuit(vector<int>& gas, vector<int>& cost) 5 { 6 int n = gas.size(); 7 for(int i = 0;i < n;i ++) 8 { 9 int cur = i;//备份 10 int c = cost[cur];//当前消耗 11 int count = gas[cur];//当前总油量 12 cur++;//下一个 13 if(cur == n) cur = 0;//如果下一个跳到n,则置为零 14 while(cur != i) 15 { 16 if(count < c) break;//如果当前总油量小于当前消耗,直接终止循环 17 count = count - c + gas[cur];//更新当前总油量 18 c = cost[cur];//备份当前消耗 19 cur++;//下一个 20 if(cur == n) cur = 0;//如果下一个跳到n,则置为零 21 } 22 if(count >= c) return i;//如果当前总油量大于等于当前消耗,则返回索引 23 } 24 return -1; 25 } 26 };
1 class Solution 2 { 3 public: 4 int canCompleteCircuit(vector<int>& gas, vector<int>& cost) 5 { 6 int rest = 0, run = 0, start = 0; 7 for (int i = 0; i < gas.size(); ++i) 8 { 9 run += (gas[i] - cost[i]); 10 rest += (gas[i] - cost[i]);//每一个(油量与消耗之差)求和 11 if (run < 0)//如果油量与消耗之差求和小于0,立即下一个 12 { 13 start = i + 1; 14 run = 0; 15 } 16 } 17 return rest < 0 ? -1: start;//(油量与消耗之差)总和是否小于0 18 } 19 };
Mamba never out

浙公网安备 33010602011771号