LeetCode Hot100 刷题笔记(7)—— 贪心
目录
前言
一、贪心
1. 买卖股票的最佳时机
2. 跳跃游戏
3. 跳跃游戏 II
4. 划分字母区间
前言
一、贪心:买卖股票的最佳时机,跳跃游戏,跳跃游戏 II,划分字母区间。
一、贪心
1. 买卖股票的最佳时机
原题链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)
class Solution(object):
def maxProfit(self, prices):
cost = float('inf')
profit = 0
for price in prices:
cost = min(cost, price)
profit = max(profit, price-cost)
return profit
2. 跳跃游戏
原题链接:55. 跳跃游戏 - 力扣(LeetCode)
class Solution(object):
def canJump(self, nums):
max_step = 0
for i in range(len(nums)):
if max_step < i:
return False
max_step = max(max_step, nums[i]+i)
return True
3. 跳跃游戏 II
原题链接:45. 跳跃游戏 II - 力扣(LeetCode)
class Solution(object):
def jump(self, nums):
# [left, right] --> [i+1, nums[i]+i]
# right < len(nums)-1
if len(nums) <= 1:
return 0
n = len(nums)
step = 1
left, right = 1, nums[0]+0
while right < len(nums)-1:
for i in range(left, right+1):
if nums[i]+i > right:
right = nums[i]+i
left = left + 1
step += 1
return step
4. 划分字母区间
原题链接:763. 划分字母区间 - 力扣(LeetCode)
class Solution(object):
def partitionLabels(self, s):
left, right = 0, 0
n = len(s)
res = []
dicts = {k:v for v, k in enumerate(s)}
while right < n-1:
for idx, c in enumerate(s):
right = max(right, dicts[c])
if right == idx:
res.append(right-left+1)
left = right + 1
return res