一、134. 加油站
题目链接:134. 加油站 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)——134. 加油站
视频讲解:406. 根据身高重建队列 - 力扣(LeetCode)
思路:cursum累加每个站点剩余油量(gas[i] - cost(i)),如果遇到负,令 i+1 为新的起始位置,看能否跑完一圈。
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
cur_sum = 0 # 统计当前位置油量差
total_sum = 0 # 所有剩余油量相加,如果小于0,整体消耗为负,一定不能跑完
start = 0 # 记录新的起始位置
for i in range(len(gas)):
total_sum += gas[i] - cost[i]
# 判断条件一定要在统计完所有油量差之后
if total_sum < 0:
return -1
for i in range(len(gas)):
cur_sum += gas[i] - cost[i]
# 如果当前累积油量小于0,选择 i + 1 为新的起始位置,cur_sum清零
if cur_sum < 0:
start = i + 1
cur_sum = 0
return start
二、135. 分发糖果
题目链接:135. 分发糖果 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)——135. 分发糖果
视频讲解:贪心算法,两者兼顾很容易顾此失彼!LeetCode:135.分发糖果_哔哩哔哩_bilibili
思路:
三、860.柠檬水找零
题目链接:860. 柠檬水找零 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)——860.柠檬水找零
视频讲解:贪心算法,看上去复杂,其实逻辑都是固定的!LeetCode:860.柠檬水找零_哔哩哔哩_bilibili
四、406.根据身高重建队列
题目链接:406. 根据身高重建队列 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)——406.根据身高重建队列
视频讲解:贪心算法,不要两边一起贪,会顾此失彼 | LeetCode:406.根据身高重建队列_哔哩哔哩_bilibili