题目
题解
本题的贪心:亏空最严重的一个点必须放在最后一步走,等着前面剩余的救助
个人觉得神奇的Z这篇题解写的特别好,一点就透:
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int n=gas.length;
int spare=0;//汽车油箱
int minIndex=0,minSpare=Integer.MAX_VALUE;
for(int i=0;i<n;i++){
spare+=gas[i]-cost[i];
if(spare<minSpare){
minSpare=spare;
minIndex=i;
}
}
return spare<0?-1:(minIndex+1)%n;
}
}
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)