在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。 说明: 如果题目有解,该答案即为唯一答案。 输入数组均为非空数组,且长度相同。 输入数组中的
List<Integer> list = new ArrayList<>(); for(int i= 0; i < gas.length; i++){ if(gas[i]>=cost[i]){ list.add(i); } } for(int n = 0; n<list.size(); n++ ){ int j = list.get(n); int sum = gas[j]; //System.out.println(list.get(n)); while( j < gas.length-1 ){ sum = sum-cost[j]; if(sum < 0){ break; } j++; sum+=gas[j]; } sum-=cost[j]; if(sum<0){ continue; } j=0; sum=sum+gas[j]; while( j != list.get(n)){ //System.out.println(",,,,,,,"); sum=sum-cost[j]; if(sum < 0){ break; } j++; sum+=gas[j]; } sum -= cost[list.get(n)]; if(sum>=0){ //System.out.println(list.get(n)); return list.get(n); } } return -1;