134. Gas Station
仅供自己学习
这是贪心可以解决的问题。我们遍历每个加油站,并且贪心的标准是 sum_gas - sum_cost >0,否则start 起点得加一。又因为不管从哪个加油站开始,绕一圈得到的 sum_gas - sum_cost都是相同的,所以如果是一个可以回到起点的数据,那么 就会大一0,否则就会小于0,也就该组数据不能绕一圈还能回到起点.所以我们用两个变量,一个total用来记录 所有station的sum_gas - sum_cost,另一个sum用来判断是否满足贪心的标准,只要 sum<0,那么他就记0,并且start 为当前起点加一。
代码:
1 class Solution { 2 public: 3 int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { 4 int size=gas.size(); 5 int sum=0,total=0; 6 int start=0; 7 for(int i=0;i<size;++i){ 8 total +=gas[i]-cost[i]; 9 sum +=gas[i] - cost[i]; 10 if(sum<0){ 11 start =i+1; 12 sum =0; 13 } 14 } 15 return (total<0)? -1:start; 16 } 17 };