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

2023.8.22

        本题是买卖股票系列 + 冷冻期。 由于引入了冷冻期,并且这个冷冻期是在卖出股票才会出现,因此我dp数组设置了四种状态:

  • 状态一:持有股票。
  • 状态二:不持有股票: 之前就卖了,所以今天不处于冷冻期。
  • 状态三:不持有股票:今天卖。
  • 状态四:不持有股票:昨天卖的,所以今天处于冷冻期。

        下面分别分析四种状态:

  1. 持有股票:①早就有了:dp[i-1][0]  ②今天刚买:昨天可能是状态二或者状态四,不可能是状态三,因为今天可以买股票,所以不处于冷冻期,所以昨天不可能卖股票。即:dp[i-1][1]-prices[i] 或者 dp[i-1][3]-prices[i] 。 
  2. 不持有股票(之前就卖了,今天不处于冷冻期):①昨天的之前就已经卖了,即dp[i-1][1]。 ②昨天的昨天卖的,即昨天处于冷冻期,今天不处于冷冻期,即dp[i-1][3]。
  3. 不持有股票(今天卖): 没什么好说的,昨天持有股票的钱+今天股票的股价,即dp[i-1][0] + prices[i]
  4. 不持有股票(昨天卖,今天处于冷冻期):已经知道是昨天卖的了,即dp[i-1][2]。

        最后结果取不持有股票的三种情况的最大值即可。 代码如下:

class Solution {
public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(),vector<int>(4));//初始化dp[0][0] = -prices[0];dp[0][1] = dp[0][2] = dp[0][3] = 0;//状态一:持有股票。//状态二:不持有股票: 之前就卖了,所以今天不处于冷冻期。//状态三:不持有股票:今天卖。//状态四:不持有股票:昨天卖的,所以今天处于冷冻期。for(int i=1; i<prices.size(); i++){dp[i][0] = max(dp[i-1][0] , max(dp[i-1][1]-prices[i] , dp[i-1][3]-prices[i]));dp[i][1] = max(dp[i-1][1] , dp[i-1][3]);dp[i][2] = dp[i-1][0] + prices[i];dp[i][3] = dp[i-1][2];}return max(dp[prices.size()-1][1],max(dp[prices.size()-1][2],dp[prices.size()-1][3]));}
};

        附上我的草稿以供参考:

 

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

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

相关文章

论AI与大数据之间的关系

前言 在21世纪&#xff0c;"AI"和"大数据"已经成为科技领域的热门词汇。它们不仅是创新的代名词&#xff0c;更是现代技术发展的双翼。然而&#xff0c;很多人对于AI与大数据之间的关系仍然停留在表面的理解。本文旨在深入探讨这两者之间的深厚关系&#…

设置Windows主机的浏览器为wls2的默认浏览器

1. 准备工作 wsl是可以使用Windows主机上安装的exe程序&#xff0c;出于安全考虑&#xff0c;默认情况下改功能是无法使用。要使用的话&#xff0c;终端需要以管理员权限启动。 我这里以Windows Terminal为例&#xff0c;介绍如何默认使用管理员权限打开终端&#xff0c;具体…

[LeetCode111双周赛LeetCode359周赛] DP双指针

参考灵神和闫总的讲解和代码&#xff1a; https://www.bilibili.com/video/BV1rP411s7Z5 https://space.bilibili.com/206214 7006. 销售利润最大化 https://leetcode.cn/problems/maximize-the-profit-as-the-salesman/ Solution 动态规划 哈希表 首先按照 end 的顺序分…

kafka-- kafka集群 架构模型职责分派讲解

一、 kafka集群 架构模型职责分派讲解 生产者将消息发送到相应的Topic&#xff0c;而消费者通过从Topic拉取消息来消费 Kafka奇数个节点消费者consumer会将消息拉去过来生产者producer会将消息发送出去数据管理 放在zookeeper

jmeter HTTP请求默认值

首先&#xff0c;打开JMeter并创建一个新的测试计划。 右键单击测试计划&#xff0c;选择"添加" > “配置元件” > “HTTP请求默认值”。 在HTTP请求默认值中&#xff0c;您可以设置全局的HTTP请求属性&#xff0c;例如&#xff1a; 服务器地址&#xff1a…

数据结构——队列(C语言)

需求&#xff1a;无 本篇文章将解决一下几个问题&#xff1a; 队列是什么&#xff1f;如何实现一个队列&#xff1f;什么场景下会用队列&#xff1f; 队列的概念&#xff1a; 队列&#xff1a;一种只允许一端进行插入数据操作&#xff0c;在另一端进行删除操作的特殊线性表。…

Redis数据结构之List

Redis 中列表&#xff08;List&#xff09;类型是用来存储多个有序的字符串&#xff0c;列表中的每个字符串成为元素 Eelement&#xff09;&#xff0c;一个列表最多可以存储 2^32-1 个元素。 在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&am…

jenkins 是什么?

一、jenkins 是什么&#xff1f; Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff0c;主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写&#xff0c;可在Tomcat等流行的servlet容器中运行&#…

小程序数据可视化:使用图表和可视化工具展示数据

在当今信息爆炸的时代&#xff0c;数据无疑是最珍贵的资源之一。然而&#xff0c;海量的数据如果不加以整理和展示&#xff0c;很难从中获取有价值的信息。这时候&#xff0c;数据可视化就发挥了重要作用&#xff0c;它能够通过图表和可视化工具将复杂的数据转化为直观的视觉形…

【爬虫练习之glidedsky】爬虫-基础2

题目 链接 爬虫往往不能在一个页面里面获取全部想要的数据&#xff0c;需要访问大量的网页才能够完成任务。 这里有一个网站&#xff0c;还是求所有数字的和&#xff0c;只是这次分了1000页。 思路 找到调用接口 可以看到后面有个参数page来控制页码 代码实现 import reques…

Vim学习(四)——命令使用技巧

命令模式 打开文本默认模式&#xff0c;按**【ESC】**重新进入 【/关键字】&#xff1a;搜索匹配关键字 G&#xff1a;最后一行 gg&#xff1a;第一行 hjkl:左下右上 yy: 复制一行 dd&#xff1a;删除一行 p:粘贴 u: 撤销插入模式 按**【i / a / o】**键均可进入文本编辑模式…

QT中按钮的基类QAbstractButton

QT中按钮的基类QAbstractButton 关于控件类的学习方法继承关系信号槽函数标题和图标按钮的 Check 属性 关于控件类的学习方法 控件类很多&#xff0c;API更多&#xff0c;但是不需要记忆知道控件对应的类名&#xff0c;通过帮助文档随用随查优先看帮助文档中控件对应的信号和槽…

【小沐学NLP】Python进行统计假设检验

文章目录 1、简介1.1 假设检验的定义1.2 假设检验的类型1.3 假设检验的基本步骤 2、测试数据2.1 sklearn2.2 seaborn 3、正态分布检验3.1 直方图判断3.2 KS检验&#xff08;scipy.stats.kstest&#xff09;3.3 Shapiro-Wilk test&#xff08;scipy.stats.shapiro&#xff09;3.…

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览…

【LeetCode】盛最多水的容器

盛最多水的容器 题目描述算法分析编程代码 链接: 盛最多水的容器 题目描述 算法分析 编程代码 class Solution { public:int maxArea(vector<int>& height) {int left 0;int right height.size()-1;int ret 0;while(left < right){int n min(height[left],h…

LMLCCS_UPDATEFO2 LCL DB 方法 get_normvector 头寸 A 中RC 1 内部错误,过账时报错<转载>

原文链接&#xff1a;https://blog.csdn.net/XFYBB/article/details/129174579 物料的成本中心&#xff0c;作业价格没有维护 再用FCMLHELP&#xff0c;重新创建一下 se37&#xff0c;FCMLHELP_CHECK_TESTFLAG&#xff0c;打断点&#xff0c;跳过PW

vue3 pdf、word等文件下载

效果&#xff1a; <div class"byLawBox"><div class"titleBox">规章制度公示</div><div class"contentBox"><TableList:loading"byLawloading"ref"byLawtablistRef":hasImport"false"…

基于Vue的3D饼图

先看效果&#xff1a; 再看代码&#xff1a; <template><div class"container"><div style"height: 100%;width: 100%;" id"bingtu3D"></div></div></template> <script> import "echarts-liqu…

亚信科技AntDB数据库通过GB 18030-2022最高实现级别认证,荣膺首批通过该认证的产品之列

近日&#xff0c;亚信科技AntDB数据库通过GB 18030-2022《信息技术 中文编码字符集》最高实现级别&#xff08;级别3&#xff09;检测认证&#xff0c;成为首批通过该认证的数据库产品之一。 图1&#xff1a;AntDB通过GB 18030-2022最高实现级别认证 GB 18030《信息技术 中文编…

问题描述:在Windows下没有预装ImageMagick工具

问题描述:在Windows下没有预装ImageMagick工具 # WInR输入cmd回车进入命令行,执行以下命令查看版本信息 magick --version没有预装ImageMagick工具 解决方案&#xff1a;下载安装ImageMagick 官网下载:ImageMagick-7.1.1-15-Q16-x64-dll.exe 下载之后&#xff0c;一路下一步…