134. Gas Station

解决环形路线上小车加油问题,确保能完成一圈旅行。通过遍历加油站,计算每站油量差值来确定起始位置。

134. Gas Station

题目

在一个环形路线上有N个加油站,在加油站的汽油量为 gas[i]。
你有一辆可以装无限量汽油的小车,从加油站[i]到它的下一站[i+1]需要消耗 cost[i] 的汽油。从某一个加油站以空邮箱开始你的旅程。
如果你可以绕着环形路线行驶一圈,返回开始加油站的索引,否则返回-1。
注意:答案是唯一的。

代码块

class Solution {
    public static int canCompleteCircuit(int[] gas, int[] cost) {
       int start = 0;
       int curGas = 0;//初始化
       int sum = 0;
       for(int i = 0; i < gas.length; i++){
           curGas += gas[i] - cost[i];//+=
           sum += gas[i] - cost[i];
           if(curGas < 0){ //当前油量不够行驶到下一站。
         //  start++;
               start = i+1;
                curGas = 0;
           } 
        }
       if(sum < 0){ // 总的油量不够行驶一圈。
           return -1;
       }else{
           return start;
       }

    }
    public static void main(String[] args) {
        int[] gas = {1,2,4};
        int[] cost = {2,1,3};
        System.out.println(canCompleteCircuit(gas, cost));
    }
}

代码分析

这道题一开始没看懂题意,然后就去搜代码,以及解析,debug后才能基本理解。
问题一:没有“+=”,就不能做到累加。
问题二:没有初始化变量curGas和sum,就去“+=”;所以报错。
问题三:不知道循环体的范围。把所有都写到了for循环体内。理解不到位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值