在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。
给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int n=gas.length;
int flag=-1; //题目要求返回-1
for(int i=0;i<n;i++){ //挨个数字遍历
if(gas[i]>=cost[i]){
//如果耗油小于供油,说明此站点有希望成为输出站点
int oil=0; //每次循环注意重置数据
int j=0;
for(;j<n;j++){
oil+=gas[(i+j)%n]-cost[(i+j)%n]; //计算出油量
if(oil<=0) //如果没油了就无法走动了,退出循环
break;
}
if(oil>=0&&j>=n-1){
//当油量有余并且到达了最后一个站点时可以输出
//因为break了,所以如果终点没油j为n-1因此需要把这种情况包括进去
flag=i;
return flag;
}
}
}
return flag;
}
}