zoukankan      html  css  js  c++  java
  • LeetCode 134. 加油站

    题目链接

    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;
        }
    }
    
  • 相关阅读:
    Working with nil
    Determining Equality of Objects
    NSLog中的%@
    ld
    恢复HDFS误删数据
    一个缓冲区溢出示例
    SpringBoard
    Symbol Table
    feof使用注意
    -g vs -rdynamic
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13657253.html
Copyright © 2011-2022 走看看