本文主要是介绍代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II、55.跳跃游戏 、45.跳跃游戏II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II、55.跳跃游戏 、45.跳跃游戏II
题目
122.买卖股票的最佳时机II
给你一个整数数组 prices
,其中 prices[i]
表示某支股票第 i
天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
class Solution:def maxProfit(self, prices: List[int]) -> int:sum_ = 0for i in range(1, len(prices)):lirun = prices[i] - prices[i - 1]if lirun > 0:sum_ += lirunreturn sum_
题目
55.跳跃游戏
给你一个非负整数数组 nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
class Solution:def canJump(self, nums: List[int]) -> bool:can_reach = [False] * len(nums)can_reach[0] = Truefor i in range(len(nums) - 1):if can_reach[i]:for j in range(nums[i]):if i + j + 1 == len(nums):return Truecan_reach[i+j+1] = Truereturn can_reach[len(nums) - 1]
题目
45.跳跃游戏II
给定一个长度为 n
的 0 索引整数数组 nums
。初始位置为 nums[0]
。
每个元素 nums[i]
表示从索引 i
向前跳转的最大长度。换句话说,如果你在 nums[i]
处,你可以跳转到任意 nums[i + j]
处:
0 <= j <= nums[i]
i + j < n
返回到达 nums[n - 1]
的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]
。
class Solution:def jump(self, nums: List[int]) -> int:step = 0if len(nums) < 2:return stepcover_max = 0cur = 0while cur <= cover_max:for cur in range(cur, cover_max + 1):cover_max = max(cover_max, nums[cur] + cur)if cover_max >= len(nums) - 1:return step + 1step += 1
这篇关于代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II、55.跳跃游戏 、45.跳跃游戏II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!