一辆车要在一城市兜圈,圈上有加油站,从第i站到i+1
</pre><span style="font-size: 18px;">站要使用cost[i]的汽油,第i站可以加上gas[i]的汽油,请问</span></p><p></p><p><span style="font-size: 18px;">汽车是否可以顺利完成兜圈,可以的话返回可以开始的index加油站</span></p><p></p><p><span style="font-size: 18px;">显然可以知道,只要gas[] 的和大于 cost[]的值,汽车总是可以完成兜圈的。</span></p><p><span style="font-size: 18px;">如何选择index呢?index选择只需遍历一次,如果gas[i]-cost[i]的累积和小于0,那么就重新选择起始点。</span></p><pre code_snippet_id="393007" snippet_file_name="blog_20140615_1_2537944" name="code" class="java">public class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int CarCurrentGas = 0;
for(int i = 0; i < gas.length; ++i){
gas[i] -= cost[i];
CarCurrentGas += gas[i];
}
if(CarCurrentGas < 0){
return -1;
}
else{
CarCurrentGas = 0;
int ans = 0;
for(int i = 0; i < gas.length; ++i){
CarCurrentGas += gas[i];
if(CarCurrentGas < 0){
ans = i + 1;
CarCurrentGas = 0;
}
}
return ans;
}
}
}