专栏首页木又AI帮打卡群刷题总结1008——加油站

打卡群刷题总结1008——加油站

题目:134. 加油站

链接:https://leetcode-cn.com/problems/gas-station

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。

说明:

如果题目有解,该答案即为唯一答案。

输入数组均为非空数组,且长度相同。

输入数组中的元素均为非负数。

示例 1: 输入: gas = [1,2,3,4,5] cost = [3,4,5,1,2] 输出: 3 解释: 从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油 开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油 开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。 因此,3 可为起始索引。

解题:

1、只有sum(gas) - sum(cost) >= 0,才可能有解。

那么,出发位置怎么算呢?

只要从某个位置开始,计算到下一个位置的累计汽油量和累计消耗量,如果累计汽油量 < 累计消耗量,则不可行,否则继续遍历直到最后一个汽油站。

代码:

class Solution:
    def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
        residue = [gas[i] - cost[i] for i in range(len(gas))]
        if sum(residue) < 0:
            return -1
        
        # 和大于0,肯定存在解
        acc = 0
        start = 0
        for i in range(len(residue)):
            acc += residue[i]
            if acc < 0:
                acc = 0
                start = i + 1
        return start

PS:刷了打卡群的题,再刷另一道题,并且总结,确实耗费很多时间。如果时间不够,以后的更新会总结打卡群的题。

PPS:还是得日更呀,总结一下总是好的。

本文分享自微信公众号 - 木又AI帮(gh_eaa31cab4b91),作者:木又

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 打卡群2刷题总结1008——环形链表

    https://leetcode-cn.com/problems/linked-list-cycle/

    木又AI帮
  • 打卡群刷题总结0601

    链接:https://leetcode-cn.com/problems/valid-anagram/

    木又AI帮
  • 打卡群刷题总结0615——两数相加

    链接:https://leetcode-cn.com/problems/add-two-numbers

    木又AI帮
  • 打卡群刷题总结0723——组合

    链接:https://leetcode-cn.com/problems/combinations

    木又AI帮
  • 打卡群刷题总结0724——子集

    链接:https://leetcode-cn.com/problems/subsets

    木又AI帮
  • 打卡群刷题总结0919——打家劫舍

    链接:https://leetcode-cn.com/problems/house-robber

    木又AI帮
  • 打卡群刷题总结0826——组合总和

    链接:https://leetcode-cn.com/problems/combination-sum

    木又AI帮
  • 打卡群刷题总结0607——移动零

    链接:https://leetcode-cn.com/problems/move-zeroes

    木又AI帮
  • 打卡群刷题总结0709—— Pow(x, n)

    链接:https://leetcode-cn.com/problems/powx-n

    木又AI帮
  • 打卡群刷题总结0922——丑数 II

    链接:https://leetcode-cn.com/problems/ugly-number-ii

    木又AI帮
  • 打卡群刷题总结0920——打家劫舍 II

    链接:https://leetcode-cn.com/problems/house-robber-ii

    木又AI帮
  • 打卡群刷题总结0827——组合总和 II

    链接:https://leetcode-cn.com/problems/combination-sum-ii

    木又AI帮
  • 打卡群刷题总结1001——组合总和 Ⅳ

    链接:https://leetcode-cn.com/problems/combination-sum-iv

    木又AI帮
  • 打卡群刷题总结0812——路径总和 II

    链接:https://leetcode-cn.com/problems/path-sum-ii

    木又AI帮
  • 打卡群刷题总结0605——缺失数字

    链接:https://leetcode-cn.com/problems/missing-number

    木又AI帮
  • 打卡群刷题总结0712——合并区间

    链接:https://leetcode-cn.com/problems/merge-intervals

    木又AI帮
  • 打卡群刷题总结0707——旋转图像

    链接:https://leetcode-cn.com/problems/rotate-image

    木又AI帮
  • 打卡群刷题总结0710—— 螺旋矩阵

    链接:https://leetcode-cn.com/problems/spiral-matrix

    木又AI帮
  • 打卡群2刷题总结1014——爬楼梯

    https://leetcode-cn.com/problems/climbing-stairs/

    木又AI帮

扫码关注云+社区

领取腾讯云代金券