题目描述
环形路上有n个加油站,第i个加油站的汽油量是gas[i].
你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。
求从哪个加油站出发可以在环形路上走一圈。返回加油站的下标,如果没有答案的话返回-1。
注意:
答案保证唯一。
思路:依次遍历从每个加油站开始出发的情况,若有完成一圈的则输出出发点的下标,若遍历完仍无符合条件的输出-1
注意数组下标到顶时要重新置0
public class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int i,j;
for(i=0;i<gas.length;i++){
int[] circle=new int[gas.length];
int temp=i;
int rest=0;
for(j=0;j<gas.length;j++){
if(temp>=gas.length)
temp=0;
circle[j]=temp;
temp++;
rest=rest+gas[circle[j]]-cost[circle[j]];
if(rest<0){
break;
}
}
if(j==gas.length){
return i;
}
}
return -1;
}
}