代码随想录算法训练营第五十一天丨309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费

309. 买卖股票的最佳时机含冷冻期

这题是中等???

最终自己写完再看代码随想录的解释感觉很好理解,但是从0到1想出来就很困难。

class Solution:def maxProfit(self, prices: List[int]) -> int:n = len(prices)if n == 1:return 0dp = [[0] * 3 for _ in range(n + 1)]dp[0][1] = - prices[0]for i in range(1, n):dp[i][0] = max(dp[i - 1][0], dp[i][2])dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i], dp[i - 1][2] - prices[i])dp[i + 1][2] = dp[i - 1][1] + prices[i]return max(dp[n - 1][0], dp[n][2])

优化一版更好理解的:

class Solution:def maxProfit(self, prices: List[int]) -> int:if not prices:return 0n = len(prices)hold = [-prices[0]] + [0] * (n-1)frozen = [0] * (n + 1)notHold = [0] * nfor i in range(1, n):hold[i] = max(hold[i-1], notHold[i-1] - prices[i])frozen[i + 1] = hold[i-1] + prices[i]notHold[i] = max(notHold[i-1], frozen[i])return max(frozen[-1], notHold[-1])

1. 持有股票(hold)

  • 从前一天持有股票转移来:如果前一天就持有股票,那么今天可以选择继续持有,这意味着今天不进行任何交易。

  • 从前一天不持有股票转移来:如果前一天不持有股票,那么今天可以选择买入股票。因此,这种情况下今天持有股票的最大利润是前一天不持有股票的最大利润减去今天的股票价格。

2. 处于冷冻期(frozen)

  • 出售股票:今天卖出股票,明天就是冷冻期。

3. 不持有股票(notHold)

  • 从前一天不持有股票转移来:如果前一天就不持有股票并且不处于冷冻期,那么今天没有任何操作,仍然保持这个状态。

  • 今天就是冷冻期:如果前一天卖出了股票,今天处于冷冻期,那今天自然也不会持有股票。

714. 买卖股票的最佳时机含手续费

这题是中等????

class Solution:def maxProfit(self, prices: List[int], fee: int) -> int:n = len(prices)dp = [[0] * 2 for _ in range(n)]dp[0][1] = - prices[0]for i in range(1, n):dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + prices[i] - fee)dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i])return dp[n - 1][0]

今日总结:

想要设计完备事件组来表示状态还真不容易。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

太阳能供电井盖-物联网智能井盖监测系统-旭华智能

在这个日新月异的科技时代,城市的每一个角落都在悄然发生变化。而在这场城市升级的浪潮中,智能井盖以其前瞻性的科技应用和卓越的安全性能,正悄然崭露头角,变身马路上的智能“眼睛”,守护城市安全。 传统的井盖监测系统…

展示模型展台的高度一般为多少---模大狮模型网

展示模型展台的高度一般取决于多个因素,包括展示物品的大小、展台的设计风格、展览场地的限制等。一般来说,展示模型展台的高度可以根据以下几点考虑: 展示物品的大小:如果展示物品比较大或需要竖立展示,展台的高度可能…

MWC 2024 | 紫光展锐“芯联世界”,携手产业伙伴共创“智慧未来”

西班牙巴塞罗那,当地时间2月26日,2024年世界移动通信大会(MWC 2024)盛大开幕。MWC由全球移动通信系统协会(GSMA)主导举办,是全球通信领域最具权威的展会之一。紫光展锐以“芯联世界 智慧未来”为…

前端开发中HTTP状态码的含义和用途,及常见错误码产生的原因和解决方法

文章目录 一、HTTP状态码含义二、HTTP状态码分类1、第一类状态码(1XX)是信息响应2、第二类状态码(2XX)是成功响应3、第三类状态码(3XX)是重定向响应4、第四类状态码(4XX)是客户端错误…

【学位论文】上海交通大学 研究生学位论文 本地保存

上海交大研究生学位论文网:http://thesis.lib.sjtu.edu.cn/ (只能校内访问或SJTU VPN访问) 如果希望下载论文,需要参考:https://github.com/olixu/SJTU_Thesis_Crawler 安装过程 安装过程的几个坑: &a…

go-zero官网

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero官网:go-zero 缩短从需求到上线的距离

【Redis】RedisTemplate和StringRedisTemplate的区别

两者的关系是 StringRedisTemplate 继承 RedisTemplate 。 两者的数据是不共通的:也就是说 StringRedisTemplate 只能管理 StringRedisTemplate 里面的数据,RedisTemplate 只能管理 RedisTemplate 中的数据。 RedisTemplate 看这个类的名字后缀是 Temp…

Cesium实战三:飞行航线动画

飞行航线追踪 可视化从旧金山到哥本哈根的真实航班。 1、获取点位数据:构建飞行跟踪器 – Cesium (cesium.com) 2、在地图上添加飞行点位:循环遍历点位数据,利用Entity直接添加点至地图上。 //添加飞行点位 const addFlightPoint () >…

010-CSS-书写规范

书写规范 1、类名规范:清晰明了,尽量保持类名唯一性,使用两到三个完整单词,采用中划线拼接2、样式嵌套不要太深,以两到三层为最佳,否则影响查找性能3、抽离公共样式文件,抽离公共变量4、添加 sc…

彻底搞懂CPU特权级

程序员在用户程序开发过程中,会遇到两个基本概念即用户态和内核态,我们所说的模式切换,就是用户态和内核态之间的切换。 用户态和内核态其实是CPU的特权级,所以模式的切换就是CPU特权级的切换,模式等同于特权级,不同的…

Cesium 问题:[Violation]‘requestAnimationFrame‘ handler took 58ms

文章目录 问题分析解决问题 Cesium 在引入页面后,控制台弹出提示信息: [Violation]requestAnimationFrame handler took 58ms分析 这个警告信息表明使用 requestAnimationFrame 方法时,其处理函数执行所需的时间超过了一定阈值,从而触发了警告。requestAnimationFrame 方…

Java+SpringBoot:制造企业质量管理的双引擎

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

mysql高可用架构设计

一、主从架构 主从架构一般如下所示 这里从节点一般设置成只读(readonly)模式。这样做,有以下几个考虑: 有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作; 防止切换逻辑有 bug&a…

Linux——进程池

Linux——进程池 池化技术进程池信道模拟任务进程退出一个bug 今天我们来学习一下管道的应用——进程池。如果有没看过上一篇管道的小伙伴可以点击这里: https://blog.csdn.net/qq_67693066/article/details/136371517 池化技术 我们首先要了解一下池化技术&#x…

StarRocks实战——特来电StarRocks应用实践

目录 一、为何引入StarRocks 二、主要应用场景 三、封装或扩展 四、集群监控预警 五、总结规划展望 5.1 使用经验分享 5.2 下一步计划 5.2.1 StarRocks集群自动安装 5.2.2 StarRocks集群高可用架构 原文大佬的这篇StarRocks应用实践有借鉴意义,这里摘抄下来…

Socket网络编程(三)——TCP快速入门

目录 概述TCP连接可靠性1. 三次握手过程2. 四次挥手过程3. 为什么挥手需要四次? 传输可靠性TCP核心APITCP传输初始化配置&建立连接客户端创建Socket建立连接服务端创建ServerSocket监听连接ServerSocket 和 Socket的关系 Socket基本数据类型传输客户端数据传输服…

【vue2项目总结】——vant-ui的使用

文章目录 安装导入全部导入按需导入 toast 轻提示vw适配 安装 通过 npm 安装 # Vue 3 项目,安装最新版 Vant: npm i vant -S# Vue 2 项目,安装 Vant 2: npm i vantlatest-v2 -S导入 全部导入 在main.js中 import Vant from v…

AI芯片行业深度:发展现状、竞争格局、市场空间及相关公司深度梳理

从广义上讲只要能够运行人工智能算法的芯片都叫作AI芯片,但通常意义上的AI芯片指的是针对人工智能算法做了特殊加速设计的芯片。AI芯片也被称为AI加速器或计算卡,即专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责…

ECMAScript语法探秘:从基础到进阶的全方位解析

一、引言 在Web前端领域,JavaScript的地位无可替代,而ECMAScript作为JavaScript的核心语言标准,更是前端开发者必须掌握的重要内容。随着ECMAScript版本的迭代更新,越来越多的新特性和语法糖被引入,使得JavaScript的开…

ACwing :1221 四平方和 (二分)

*#include <iostream> #include <cstring> #include <algorithm>using namespace std; const int N 5e6 10; int n;struct sum{int s,c,d;bool operator < (const sum &T)const{ // 重载小于符号if(s ! T.s) return s < T.s;if(c ! T.c) …