《python算法与数据结构2000讲》0134. 加油站

这篇博客讨论了如何使用贪心算法解决一个环路中的加油站问题。汽车在环路上行驶,每个加油站有特定的汽油量和消耗量。目标是找出是否能从任意一站出发绕环路行驶一周。解题思路包括暴力求解和贪心算法,重点介绍贪心策略,通过计算差值总和与油箱最小值来确定可行起点。
摘要由CSDN通过智能技术生成

《python算法与数据结构2000讲》0134. 加油站

  • 标签:贪心、数组
  • 难度:中等

题目大意

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

现在有一辆油箱无限容量的汽车,从第 i 个加油站开往第 i + 1 个加油站需要消耗汽油 cost[i] 升。如果汽车上携带的有两不够 cost[i],则无法从第 i 个加油站开往第 i + 1 个加油站。

现在从其中一个加油站开始出发,且出发时油箱为空。如果能绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。

解题思路

  1. 暴力求解

分别考虑从第 0 个点、第 1 个点、…、第 i 个点出发,能否回到第 0 个点、第 1 个点、…、第 i 个点。

  1. 贪心算法
  • 如果加油站提供的油总和大于等于消耗的汽油量,则必定可以绕环路行驶一周
  • 假设先不考虑油量为负的情况,我们从「第 0 个加油站」出发,环行一周。记录下汽油量 gas[i] 和 cost[i] 差值总和 sum_diff,同时记录下油箱剩余油量的最小值 min_sum。
  • 如果差值总和 sum_diff < 0,则无论如何都不能环行一周。油不够啊,亲!!
  • 如果 min_sum ≥ 0,则行驶过程中油箱始终有油,则可以从 0 个加油站出发环行一周。
  • 如果 min_sum < 0,则说明行驶过程中油箱油不够了,那么考虑更换开始的起点。
    • 从右
  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT狂飙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值