题目描述
AC代码
暴力做法:
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int n=gas.length;
for(int i=0,j=0;i<n;i++){
int gas_left=0;//剩余的油
//转一圈
for(j=0;j<n;j++){
int k=(i+j)%n;
gas_left+=gas[k]-cost[k];
if(gas_left<0) break;
}
if(j>=n) return i;
}
return -1;
}
}
优化:执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户。
将for循环中的i++
变成i+=j+1
;
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int n=gas.length;
for(int i=0,j=0;i<n;i+=j+1){
int gas_left=0;//剩余的油
//转一圈
for(j=0;j<n;j++){
int k=(i+j)%n;
gas_left+=gas[k]-cost[k];
if(gas_left<0) break;
}
if(j>=n) return i;
}
return -1;
}
}