D32| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

news/2025/1/16 2:46:30/

122.买卖股票的最佳时机II

注:此篇后文章讲解统一放最后

1.题目
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

2.实现
开始做的时候只是举例分析,也有受到昨天峰谷的影响,其实在这里真正的原理就是利润分解,条件是当天卖出后可当天购买

class Solution:def maxProfit(self, prices: List[int]) -> int:total = 0for i in range(1, len(prices)):diff = prices[i] - prices[i - 1]if diff > 0:total += diffreturn total

55. 跳跃游戏

1.题目
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。

2.复习前
纠结于跳几步

3.实现
覆盖范围来看,是否能覆盖到终点;
细节:当数组长度为1时的讨论情况,涉及遍历到哪——建议选择边界为n

class Solution:def canJump(self, nums: List[int]) -> bool:n = len(nums)max_length = nums[0]for i in range(n):if max_length >= n - 1:return True if i > max_length or i == n - 1:return False# tmp = nums[i] + i# max_length = tmp if tmp > max_length else max_length  max_length = max(nums[i] + i, max_length)

45.跳跃游戏II

1.题目
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。

2.复习前:
已知讨论覆盖范围,不知如何决定局部最优

3.实现

class Solution:def jump(self, nums: List[int]) -> int:total = 0n = len(nums)next_distance = 0cur_distance = 0for i in range(n):next_distance = max(nums[i] + i, next_distance)if i == cur_distance:if cur_distance >= n - 1:return total  # 可以直接返回是因为total已经加过1了else:total += 1cur_distance = next_distanceif cur_distance >= n - 1:  # 这里是避免多余的遍历return total    

总结:
1)采用遍历的方式,用next记录了 **到达cur(上一个最远覆盖下标)**时 的最远覆盖范围;区别于我的考虑:单独对这个点跳到最远时,并和两个点之间经过的点比较覆盖范围,这样就限定了cur
2)实现细节:
(1)可以单独讨论长度为1的情况
(2)对cur和next赋初值为0,什么时候更新次数和返回值
值得二刷

文章讲解


http://www.ppmy.cn/news/188786.html

相关文章

台式电脑故障

台式电脑故障 前言一、遇到的问题1.开机报错(Please connect USB keyboard to a USB port on the computer)(未找到原因)2.开机报错(save bios error) 前言 记录一些学习经验、遇到的问题 一、遇到的问题 …

台式电脑怎么还原系统

在遇到电脑操作系统故障,系统崩溃死机从而无法再次启动电脑的时候,当出现故障且无法解决时,有不少人会选择恢复出厂设置。一般都是需要自行启动电脑备份状态,然后还原电脑初始的系统。那么那么台式电脑怎么还原系统设置&#xff1…

路由器怎么连接台式电脑

现如今,电脑及网络是必不可少的。路由器作为Internet网络的核心设备,对整个网络系统的性能起到了关键作用,可是路由器怎么连接电脑,却有很多人不知道路由器怎么连接,下面小编就给大家带来路由器怎么连接台式电脑&#…

Java程序设计入门教程--成员变量

成员的分类 实例成员 实例成员是属于对象的,即属于对象级别,包括实例成员属性(也称为实例成员变量)和实例成员方法,只有创建了对象之后才能访问实例成员属性和实例成员方法。 类成员 类成员属于类的,类成…

安卓进阶(一)App性能优化

文章目录 性能优化的目的及方向流畅性启动速度页面显示速度响应速度 稳定性ANRCrash 资源节省性 布局优化选择耗费性能较少的布局减少布局的层级(嵌套)使用布局标签尽量少用布局属性wrap_contentincludemergeinclude与merge的区别ViewStub 内存泄露常见内…

【JavaEE初阶】万字详解TCP/IP协议!!!(一)

文章目录 1. 应用层和传输层的联系2. UDP协议3. TCP协议3.1 TCP报头介绍3.2 TCP实现可靠传输的核心机制(1)确认应答(2)超时重传(3)连接管理建立连接(三次握手)断开连接(四次挥手) &a…

嵌入式开发常用的几招调试方法

嵌入式系统调试时相对比较麻烦一些,特别是在定位一些疑难问题时,调试手段就显得非常重要。废话不多说,直接上方法。 方法一:利用特殊文件名字的文件存在与否来触发调试代码是否运行。比如有些特殊状况下,我们需要保存一…

daphne启动django静态文件

daphne 启动django处理静态文件 p起步 线上部署时因设置了 settings.DEBUG False 会导致静态文件都是 404 的情况。主要原因是应为关闭DEBUG模式后,Django 便不提供静态文件服务了。 runserver 的启动 如果运行是通过 runserver 命令的方式,那简单&…