美文网首页
134. 加油站

134. 加油站

作者: bangbang2 | 来源:发表于2020-07-14 15:07 被阅读0次
image.png

用的是贪心算法


image.png

暴力解法:从每一个节点开始走,看看能不能走到最后(时间复杂度是n^2)
1:把加油和消耗的油分别加起来,如果总油量大于等于消耗量,那有走完的可能性,一旦小于的话,直接return -1


image.png
2:如图,暴力解法假设从第一个节点开始走,如果到第三个节点发现走不通,会break,来从第二个节点开始遍历,但在贪心算法里,我们直接从第三个节点开始走。
这样会假设从第二个节点开始走,其实,肯定走不通,时间复杂度走一圈就行,为O(n)
为什么有这样的假设呢?

因为第一个节点能到第三个节点,就说明,第一个节点肯定能到第二个节点,说明在到达第二个节点的油量是大于等于0的,如果直接从第二个节点出发,单靠油箱的油,肯定无法到达啊,之前的油量为0(很简单的逻辑)
该题的结果就是最后一个出现不满足的条件的点,就是最终答案,为什么不用来验证之后的点呢?
同理,既然后边的点能够走到起始点,那在它之前的点肯定也能走完
具体流程:
1:把油和消耗都分别加起来,如果消耗大,那么直接return -1
2:接下来,遍历整个数组,currentgas代表当前油量,currentgas=currentgas-cost+gas,如果currentgas<0,就代表从下一个节点开始找,最后那个这样的点就是我们要找的起点

注意:题目已经说了,这样的点只能存在一个,所以最后一个这样的点就是起点

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
      int totalgas=0;
      int totalcost=0;
      for(int i=0;i<gas.length;i++){
          totalcost=totalcost+cost[i];
          totalgas=totalgas+gas[i];
      }
      if(totalgas<totalcost) return -1;
      int currentgas=0;//代表当前油量
      int start=0;
      for(int i=0;i<gas.length;i++){
          currentgas=currentgas+gas[i]-cost[i];
          if(currentgas<0){
              currentgas=0;//一旦小于0,要将currentgas初始化为0,从i+1个节点从新开始
              start=i+1;
          }
      }
      return start;
    }
}

相关文章

  • LeetCode-134-加油站

    LeetCode-134-加油站 134. 加油站[https://leetcode-cn.com/problem...

  • leetcode面试top(1模拟)

    134. 加油站[https://link.zhihu.com/?target=https%3A//leetcod...

  • 力扣每日一题:134.加油站 贪心+暴力双解

    134.加油站 https://leetcode-cn.com/problems/gas-station/[htt...

  • 从更本质的角度去看「加油站」问题

    题目描述 这是 LeetCode 上的 「134. 加油站」 ,难度为 「中等」。 在一条环路上有N个加油站,其中...

  • [day5] [LeetCode] [title134,376]

    134. 加油站 在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。 你有一辆油箱容量无限的的汽车,...

  • 984. 不含 AAA 或 BBB 的字符串/ 134. 加油站

    984. 不含 AAA 或 BBB 的字符串 相关标签 : 贪心算法 134. 加油站 相关标签: 贪心算法

  • 134. 加油站

    在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。 你有一辆油箱容量无限的的汽车,从第i个加油站开往...

  • 134. 加油站

    用的是贪心算法 暴力解法:从每一个节点开始走,看看能不能走到最后(时间复杂度是n^2)1:把加油和消耗的油分别加起...

  • 134.加油站

    题目描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽...

  • 134. 加油站

    在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 ...

网友评论

      本文标题:134. 加油站

      本文链接:https://www.haomeiwen.com/subject/hjaxhktx.html