目录
前言
一、贪心
1. 买卖股票的最佳时机
2. 跳跃游戏
3. 跳跃游戏 II
4. 划分字母区间
前言
一、贪心:买卖股票的最佳时机,跳跃游戏,跳跃游戏 II,划分字母区间。
一、贪心
1. 买卖股票的最佳时机
原题链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)
class Solution(object):def maxProfit(self, prices):cost = float('inf')profit = 0for 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 = 0for i in range(len(nums)):if max_step < i:return Falsemax_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)-1if len(nums) <= 1:return 0n = len(nums)step = 1left, right = 1, nums[0]+0while right < len(nums)-1:for i in range(left, right+1):if nums[i]+i > right:right = nums[i]+ileft = left + 1step += 1return step
4. 划分字母区间
原题链接:763. 划分字母区间 - 力扣(LeetCode)
class Solution(object):def partitionLabels(self, s):left, right = 0, 0n = 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 + 1return res