首页 > 其他 > 详细

LeetCode 134. 加油站

时间:2020-09-12 16:32:56      阅读:39      评论:0      收藏:0      [点我收藏+]

题目链接

134. 加油站

题目分析

这个题初看没啥思路,但是细看的话可以用贪心来解决问题。
具体的思路写在代码中了

代码实现

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int sum = 0;
        //计算油量与消耗量之差的总和
        for(int i = 0; i < gas.length; i++){
            sum += gas[i] - cost[i];
        }
        //如果总和小于0,代表着这一趟无论你怎么走都是走不完的,直接返回-1
        if(sum < 0){
            return -1;
        }
        int cur = 0;
        int start = 0;
        //cur代表当前油量,我们从0开始走,当我们走到一个站之后,发现当前油量已经小于0了,说明从前一个位置走,到当前位置是一定会失败的。
        //至于这里为什么start是i + 1呢,因为我们从[a, i - 1]都是可以成功走完的,只有第i位是失败的,说明第i位的耗油量远远大于0,所以从这里开始不现实,所以选择从i+1位走
        for(int i = 0; i < gas.length; i++){
            cur += gas[i] - cost[i];
            //如果当前油量小于0,就直接更新起始位置
            if(cur < 0){
                start = i + 1;
                cur = 0;
            }
        }
        return start;
    }
}

LeetCode 134. 加油站

原文:https://www.cnblogs.com/ZJPaang/p/13657253.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!