代码随想录算法训练营第五十天 | 123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV

目录

123.买卖股票的最佳时机III

188.买卖股票的最佳时机IV


123.买卖股票的最佳时机III

题目链接:123. 买卖股票的最佳时机 III

仿照买卖股票的最佳时机,多设置两个状态用于记录第2次是否持有股票:

(1)dp[ i ][ 0 ] 表示第一次持有股票;

        dp[ i ][ 1 ] 表示第一次不持有股票;

        dp[ i ][ 2 ] 表示第二次持有股票;

        dp[ i ][ 3 ] 表示第二次不持有股票;

(2)dp[ i ][ 0 ] = max( dp[ i - 1 ][ 0 ], -prices[ i ] );

        dp[ i ][ 1 ] = max( dp[ i - 1 ][ 1 ], dp[ i - 1 ][ 0 ] + prices[ i ] );

        dp[ i ][ 2 ] = max( dp[ i - 1 ][ 2 ], dp[ i - 1 ][ 1 ] - prices[ i ] );

        dp[ i ][ 3 ] = max( dp[ i - 1 ][ 3 ], dp[ i - 1 ][ 2 ] + prices[ i ] );

(3)第二次买入的初始情况取决于第一次买入的初始情况:

        dp[ 0 ][ 2 ] = dp[ 0 ][ 0 ] = -prices[ 0 ];

(4)按日期遍历;

通过观察我们不难看出 dp数组前后关系只维持了 i 与 i - 1 的关系,所以可以压缩数组到一维:

class Solution {
public:int maxProfit(vector<int>& prices) {vector<int> dp(4, 0);dp[2] = dp[0] = -prices[0];for(int i = 1; i < prices.size(); ++i){dp[0] = max( dp[0], -prices[i] );dp[1] = max( dp[1], dp[0] + prices[i] );dp[2] = max( dp[2], dp[1] - prices[i] );dp[3] = max( dp[3], dp[2] + prices[i] );}return dp[3];}
};

188.买卖股票的最佳时机IV

题目链接:188. 买卖股票的最佳时机 IV

        在买卖股票的最佳时机 Ⅰ、Ⅲ中,我们使用二维的 dp数组,其中第二维用于表示当前状态, 当只能买卖一次时有两种状态,当能买卖两次时有4种状态,拓展一下, 当能买卖 k 次时,可以有 2k 种状态,并且每种状态之间的关联都是相通的。

        当然也可以压缩数组,使得 dp 数组仅表示状态。

        为了保持统一,特地在所有状态前加入了 0 状态,表示不进行操作,随后是 1 到 2k 个状态。

class Solution {
public:int maxProfit(int k, vector<int>& prices) {vector<int> dp(2 * k + 1, 0);for(int i = 1; i < 2 * k + 1; i += 2){dp[i] = -prices[0];}for(int i = 1; i < prices.size(); ++i){for(int j = 1; j < 2 * k + 1; ++j){dp[j] = max(dp[j], dp[j - 1] - prices[i]);++j;dp[j] = max(dp[j], dp[j - 1] + prices[i]);}}return dp[2 * k];}
};

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

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

相关文章

SCT2432QSTER,可替代LMR14030-Q1;3.8V-40V输入、3.5A、高效率同步降压型DCDC转换器、具有内部补偿功能

描述&#xff1a; SCT2432Q是3.5A的同步降压转换器&#xff0c;具有宽输入电压&#xff0c;范围从3.8V到40V&#xff0c;它集成了一个80mΩ的高压侧MOSFET和一个50mQ的低压侧MOSFET&#xff0c;SCT2432Q采用峰值电流模式控制&#xff0c;支持脉冲跳过调制(PSM)&#xff0c;具有…

0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 嗨&#xff0c;大家好&#xff0c;今天我们来介绍【航拍VR视频补天】。之前已经教给了大家如何处理航拍图片的补天&#xff0c;肯定有很多小伙伴也在好奇&#xff0c;航拍的VR视频…

深度学习(一):Pytorch之YOLOv8目标检测

1.YOLOv8 2.模型详解 2.1模型结构设计 和YOLOv5对比&#xff1a; 主要的模块&#xff1a; ConvSPPFBottleneckConcatUpsampleC2f Backbone ----->Neck------>head Backdone 1.第一个卷积层的 kernel 从 6x6 变成了 3x3 2. 所有的 C3 模块换成 C2f&#xff0c;可以发现…

Java学习笔记46——模块化

模块化 模块化概述模块的基本使用 模块化概述 Java语言随着这些年的发展已经成为了一门影响深远的编程语言&#xff0c;无数平台&#xff0c;系统都采用Java语言编写。但是 伴随着发展&#xff0c;Java也越来越庞大&#xff0c;逐渐发展成为一门“臃肿”的语言。而且&#xff…

UniPro集成华为云WeLink 为企业客户构建互为联接的协作平台

华为云WeLink是华为开启数字化办公体验、帮助企业实现数字化转型的实践&#xff0c;类似钉钉。UniPro的客户企业中&#xff0c;有使用WeLink作为协作工具的&#xff0c;基于客户的实际业务需求&#xff0c;UniPro实现了与WeLink集成的能力&#xff0c;以帮助客户企业丰富和扩展…

软文营销助力品牌打开市场,提升内在竞争力

当今环境下&#xff0c;企业想要通过传统营销方式打开市场可以说是难度较大&#xff0c;用户如今更偏向于好的内容&#xff0c;而软文营销正是通过好内容吸引用户&#xff0c;助力品牌打开市场&#xff0c;提升内在竞争力&#xff0c;接下来媒介盒子就从以下几个方面和大家聊聊…

库位角点检测之Centernet/CornerNet算法

1.CornerNet CornerNet 那么我们从bounding box左上角(top-left corner)看物体。视线横着的话&#xff0c;物体就在视线的下面&#xff08;那么视线所在位置为the topmost boundary of an object&#xff09;。视线竖着的话&#xff0c;物体就在视线的右边&#xff0c;那么视线…

美团20k软件测试工程师的经验分享

前言 时间真是快&#xff0c;转眼间变成打工人也有三年的时间了&#xff0c;最近几天朋友圈被各个同学的答辩刷屏了。去年自己过年回到家里&#xff0c;再回母学校就是走走瞧瞧&#xff0c;经历了可能是唯一一年的云答辩。学生时代对未来的工作充满了想象&#xff0c;一直想知…

连接服务器的ssh终端自动断开解放方法

在Linux中&#xff0c;SSH连接在一段时间内没有活动时可能会自动断开&#xff0c;这是为了安全性考虑的一种默认行为&#xff0c;以防止未经授权的访问。这个时间限制通常由SSH服务器的配置决定。你可以通过以下几种方式来处理这个问题&#xff1a; 1.使用SSH配置文件&#xf…

SQL面试题,判断if的实战应用

有如下表&#xff0c;请对这张表显示那些学生的成绩为及格&#xff0c;那些为不及格 1、创建表&#xff0c;插入数据 CREATE TABLE chapter8 (id VARCHAR(255) NULL,name VARCHAR(255) NULL,class VARCHAR(255) NULL,score VARCHAR(255) NULL );INSERT INTO chapter8 (id, n…

测试面试:不明白什么是质量保障

这是我面试经常问的一个问题&#xff0c;很多人并不明白其中的区别。 如上图&#xff0c;整体的质量体系架构图相对简单&#xff0c;主要包含三个部分&#xff1a;愿景&#xff08;高质量交付&#xff0d;快、好&#xff09;、能力&#xff08;中间三层不同的能力&#xff09;和…

Ubuntu下进行串口卡驱动

Ubuntu下安装串口卡驱动 1.下载厂家提供的驱动上传至本地电脑 cd &#xff08;驱动路径下&#xff09; 2.Lspci -v 查看电脑串口卡信息 3.下载编译包 sudo apt-get update sudo apt-get install build-essential linux-headers-$(uname -r) 4.编译驱动 make sudo make i…

如何管理施工现场?一招轻松搞定

随着科技的快速发展&#xff0c;建筑行业正迎来一场革命性的变革&#xff0c;智慧工地成为引领这一变革的关键力量。传统的建筑方式正在被智能化、数字化的解决方案所取代&#xff0c;为项目管理、安全性和效率带来了全新的可能性。 客户案例 建筑公司 山东某建筑公司通过引入…

数据结构算法-选择排序算法

引言 说起排序算法&#xff0c;那可就多了去&#xff0c;首先了解什么叫排序 以B站为例&#xff1a; 蔡徐坤在B站很受欢迎呀&#xff0c;先来看一下综合排序 就是播放量和弹幕量&#xff0c;收藏量 一键三连 都很高这是通过一些排序算法 才能体现出综合排序 蔡徐坤鬼畜 按照播…

联合体union

非受限联合体 联合体 在C中&#xff0c;union 是一种特殊的数据结构&#xff0c;允许在同一内存位置存储不同的数据类型。union 的每个成员都从同一内存位置开始&#xff0c;这就意味着 union 中的所有成员共享同一块内存。 union 的语法如下&#xff1a; union MyUnion {i…

map()的用法

JavaScript Array map() 方法 先说说这个方法浏览器的支持&#xff1a; 支持五大主流的浏览器&#xff0c; 特别注意&#xff1a;IE 9 以下的浏览器不支持&#xff0c;只支持IE 9以上的版本的浏览器 特别注意&#xff1a;IE 9 以下的浏览器不支持&#xff0c;只支持IE 9以上的…

Android超简单实现-即时更新Toast(可直接复制)

效果 实现 第一步、封装个工具类ToastUtil.class&#xff08;可直接复制拿走&#xff09; public class ToastUtil {private static Toast mToast null; // toast对象&#xff0c;用于判断是否第一次使用/*** 即时更新Toast* param content content* param message 消息内容…

Nacos作为配置中心的一些知识二

11292327 问&#xff1a;客户端发请求给Nacos服务端&#xff0c;服务端这边会进行哪些处理&#xff1f; 答&#xff1a;客户端发请求给Nacos 服务端 &#xff0c;服务端这边通过ConfigController类的309行的listener方法&#xff0c;进行处理 第一步 获取客户端请求的文件的…

39.从0到上线三天搭建个人网站(第三天)

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 一、第三天主要工作 1.完成detail页面的开发 2.将所有数据以及部分静态资源存在uniCloud&#xff0c;为以后做管理后台做准备 3.创建云对象getData&#xff0c;在beforecreate&#xff08;&#xff09;中获取数据 4.…

SQL server 基线安全加固操作

目录 账号管理、认证授权 ELK-Mssql-01-01-01 ELK-Mssql-01-01-02 ELK-Mssql-01-01-03 ​​​​​​​ ELK-Mssql-01-01-04 ​​​​​​​ ELK-Mssql-01-01-05 ​​​​​​​ELK-Mssql-01-01-06 日志配置 ELK-Mssql-02-01-01 通信协议 ELK-Mssql-03-01-01 ​​​​​…