思路如下:
1、定义一个总的剩余油量变量total_tank和当前剩余油量变量cur_tank,分别用来记录所有加油站油量减去消耗油量的值 与 以某个加油站为起点的当前剩余油量。前者用来保证循环下来剩余油量不为负,后者用来保证能有充足的油量到下一个加油站。
2、原理说明
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int m=gas.length;
//总的剩余油量
int total_tank=0;
//当前剩余油量
int cur_tank=0;
int start_station=0;
for(int i=0;i<m;i++){
cur_tank+=gas[i]-cost[i];
total_tank+=gas[i]-cost[i];
//当前剩余油量小于0说明无法到达下一个站
if(cur_tank<0){
cur_tank=0;
start_station=i+1;
}
}
//总剩余油量不能小于0,否则返回-1
return total_tank>=0?start_station:-1;
}
}
原题地址:
134. 加油站