力扣123. 买卖股票的最佳时机 III
动态规划
- 思路:
- 最多可以完成两笔交易,因此任意一天结束后,会处于5种状态:
- 未进行任何操作;
- 只进行了一次买操作;
- 进行了一次买操作和一次卖操作;
- 再完成了一次交易之后,进行了一次买操作;
- 完成了两次交易;
- 第 1 种状态利润未发生变化,不记录其状态;
- 假设其他四种状态的最大利润分别是 buy1,sell1,buy2,sell2;
- 对应的状态转移方程:
- 第 i 天状态为 buy1 可以是:
- 第 i - 1 天是 buy1,第 i 天不操作,即 buy1';
- 第 i 天进行买操作,第 i - 1 天未进行任何操作 -prices[i];
- 则 buy1 = max(buy1', -prices[i]);
- 第 i 天状态是 sell1 可以是:
- 第 i - 1 天是 sell1,第 i 天不操作,即 sell1';
- 第 i - 1 天是 buy1,第 i 天卖出,即 buy1' + prices[i];
- 则 sell1 = max(sell1', buy1' + prices[i]);
- 第 i 天状态是 buy2 可以是:
- 第 i - 1 天是 buy2,第 i 天不操作,即 buy2';
- 第 i - 1 天是 sell1,第 i 天买入,即 sell1' - prices[i];
- 则 buy2 = max(buy2', sell1' - prices[i]);
- 第 i 天状态是 sell2 可以是:
- 第 i - 1 天是 sell2,第 i 天不操作,即 sell2';
- 第 i - 1 天是 buy2,第 i 天卖出,即 buy2' + prices[i];
- 则 sell2 = max(sell2', buy2' + prices[i]);
- 同一天买入卖出对收益不会产生影响,在状态转移时,可以直接根据第 i 天计算出的值进行状态转移;
- 第 i 天状态为 buy1 可以是:
- 边界条件第 0 天:
- buy1 = -prices[0]
- sell1 = 0
- buy2 = -prices[0]
- sell2 = 0
- 从 i = 1 开始进行动态规划,最终 sell2 的结果即为所求的最大收益;
- 最多可以完成两笔交易,因此任意一天结束后,会处于5种状态:
class Solution {
public:int maxProfit(vector<int>& prices) {int size = prices.size();int buy1 = -prices[0];int sell1 = 0;int buy2 = -prices[0];int sell2 = 0;for (int i = 0; i < size; ++i) {buy1 = std::max(buy1, -prices[i]);sell1 = std::max(sell1, buy1 + prices[i]);buy2 = std::max(buy2, sell1 - prices[i]);sell2 = std::max(sell2, buy2 + prices[i]);}return sell2;}
};
相关文章:
力扣123. 买卖股票的最佳时机 III
动态规划 思路: 最多可以完成两笔交易,因此任意一天结束后,会处于5种状态: 未进行任何操作;只进行了一次买操作;进行了一次买操作和一次卖操作;再完成了一次交易之后,进行了一次买操…...
Vue3:vue-cli项目创建
一、node.js检测或安装: node -v node.js官方 二、vue-cli安装: npm install -g vue/cli # OR yarn global add vue/cli/*如果安装的时候报错,可以尝试一下方法 删除C:\Users**\AppData\Roaming下的npm和npm-cache文件夹 删除项目下的node…...
C# .Net学习笔记—— 异步和多线程(Task)
一、概念 Task是DotNet3.0之后所推出的一种新的使用多线程的方式,它是基于ThreadPool线程进行封装的。 二、使用多线程的时机 任务能够并发运行的时候,提升速度;优化体验 三、基本使用方法 private void button5_Click(object sender, Ev…...
Python从入门到网络爬虫(读写Excel详解)
前言 Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。最常用的Excel处理库有xlrd、xlwt、xlutils、xlwings、openpyxl、pandas,下面是各个模块的支持情况: 工具名称.xls.xlsx获取文件内容写入…...
Mysql之子查询、连接查询(内外)以及分页查询
目录 一.案例(接上篇博客) 09)查询学过「张三」老师授课的同学的信息 10)查询没有学全所有课程的同学的信息 11)查询没学过"张三"老师讲授的任一门课程的学生姓名 12)查询两门及其以上不及格课程…...
计算机的存储单位
在计算机中,只能识别二进制。 byte是1个字节,是8个比特位,所以byte可以存储的最大值是:01111111,byte是 [-128 ~ 127] 共可以标识256个不同的数字。 1字节 8bit(8比特)--> 1byte 8bit 类…...
设备树文件中的设备节点
一. 简介 前面几篇文章学习了 关于设备树文件的编译,设备树文件的调用。 本文开始学习 设备树文件的语法。具体学习设备节点与标准属性。 二. 设备树文件之设备节点与标准属性 1. 设备节点 设备树 是采用树形结构来描述板子上的设备信息的文件,每…...
文件管理工具.netcore资源文件管理
文件管理工具 怎么快速有效的管理我的文件包括文件夹,需求功能是 模糊搜索显示匹配的文件夹或文件数据 快速打开文件夹位置 在windows直接查看搜索速度太慢,范围宽泛,整理所需资源文件名和文件本机路径保存在数据库,可以在数据库中…...
go-carbon v2.3.4 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...
vue3 内置组件
文章目录 前言一、过渡效果相关的组件1、Transition2、TransitionGroup 二、状态缓存组件(KeepAlive)三、传送组件(Teleport )四、异步依赖处理组件(Suspense) 前言 在vue3中 其提供了5个内置组件 Transiti…...
MFC如何动态创建button按钮并添加点击事件
在MFC中,可以使用CButton类来动态创建按钮。下面是一个示例代码,演示了如何动态创建按钮并添加点击事件: 在对话框类的头文件中声明按钮变量: CButton m_btnDynamic;在对话框的OnInitDialog()函数中使用Create()函数创建按钮&am…...
Qt - QML框架
文章目录 1 . 前言2 . 框架生成3 . 框架解析3.1 qml.pro解析3.2 main.cpp解析3.3 main.qml解析 4 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 什么是QML? QML是一种用户界面规范和编程语言。它允许开发人员…...
Python+Flask+MySQL的图书馆管理系统【附源码,运行简单】
PythonFlaskMySQL的图书馆管理系统【附源码,运行简单】 总览 1、《的图书馆管理系统》1.1 方案设计说明书设计目标需求分析工具列表 2、详细设计2.1 登录2.2 注册2.3 程序主页面2.4 图书新增界面2.5 图书信息修改界面2.6 普通用户界面2.7 其他功能贴图 3、下载 总览…...
Module-Federation[微前端]
Module-Federation 微前端简介我们为什么没有延续使用【乾坤】使用Module-Federation 优/缺EMP 优EMP 缺图解DEMO详解`Tips:` [文件资源](https://download.csdn.net/download/alnorthword/88699315)微前端简介 微前端是借鉴了微服务的理念,将一个庞大的应用拆分成多个独立灵活…...
Spring 动态数据源事务处理
在一般的 Spring 应用中,如果底层数据库访问采用的是 MyBatis,那么在大多数情况下,只使用一个单独的数据源,Spring 的事务管理在大多数情况下都是有效的。然而,在一些复杂的业务场景下,如需要在某一时刻访问不同的数据库,由于 Spring 对于事务管理实现的方式,可能不能达…...
WSL2-Ubuntu22.04子系统图形化界面搭建与远程桌面连接
提示:文中不提供WSL2子系统搭建步骤,假定子系统已建立好: 文章目录 检查WSL子系统状态图形化界面安装远程桌面连接可能遇到的相关问题xrdp状态异常远程桌面黑屏 检查WSL子系统状态 wsl -l -v如下图所示为正常 图形化界面安装 以此执行如下…...
【sklearn练习】model常用属性和功能
介绍 scikit-learn 中的机器学习模型(estimator)通常具有一组常用属性和功能,这些属性和功能可以用于训练、评估和使用模型。以下是一些常见的模型属性和功能: 常见属性: coef_:对于线性模型(…...
IO类day01
File类 File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径) 使用File可以做到: 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等 2:创建和删除文件或目录 3:访问一个目录中的子项 但是File不能访问文件数据. pu…...
软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告
xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》(A)试题(开卷) 题目:以某一 web 系统为测试对象,完成以下文档的编写: (满分 100 分) (1&am…...
适用于任何公司的网络安全架构
1.第一等级:基础级 优势 可防范基本有针对性的攻击,使攻击者难以在网络上推进。将生产环境与企业环境进行基本隔离。 劣势 默认的企业网络应被视为潜在受损。普通员工的工作站以及管理员的工作站可能受到潜在威胁,因为它们在生产网络中具有基本和管理…...
Jable视频下载终极指南:3步免费保存你喜欢的视频内容
Jable视频下载终极指南:3步免费保存你喜欢的视频内容 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download jable-download是一款专为Jable.tv视频平台设计的免费下载工具,通过Ch…...
Google与Cohere发布新一代音频AI模型
Google LLC和Cohere Inc.今日发布了专为音频处理任务优化的新人工智能模型。这家搜索巨头的算法Gemini 3.1 Flash Live能够自动化客户服务交互。Cohere的新AI模型则专为语音转录而设计。两款模型的输出质量都比其前代产品有显著提升。企业可使用Gemini 3.1 Flash Live构建语音智…...
【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(五)- 动态配置与性能优化实战(vsetvli/vsetivli/vsetvl)
1. 动态向量配置指令的核心作用 RISC-V向量扩展指令集中最精妙的设计之一,就是允许程序运行时动态调整向量处理参数的机制。想象你正在用不同尺寸的螺丝刀组装家具——当遇到大螺丝就换大号刀头,碰到小螺丝立即切换精密刀头,这就是vsetvli/vs…...
Phi-4-Reasoning-Vision行业落地:教育领域图像题解与隐藏线索识别案例
Phi-4-Reasoning-Vision行业落地:教育领域图像题解与隐藏线索识别案例 1. 项目背景与价值 在教育领域,图像题解和隐藏线索识别一直是教学和考试中的难点。传统方法依赖人工标注和分析,效率低下且容易遗漏关键信息。Phi-4-Reasoning-Vision多…...
正点原子IMX6ULL史诗级新内核Linux7.0移植教程(5)梭哈配置主线设备树
正点原子IMX6ULL史诗级新内核Linux7.0移植教程(5)梭哈配置主线设备树 仓库已经开源,可以研究补丁和直接看完整教程:https://github.com/Awesome-Embedded-Learning-Studio/imx-forge 有任何意见欢迎提出 PR!会第一时间…...
每日算法题 17---205.同构字符串
题目 205.同构字符串 要求 给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一…...
2025年开源工具jable-download:视频下载工具高效解决方案
2025年开源工具jable-download:视频下载工具高效解决方案 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 在数字化内容消费日益增长的今天,视频资源的获取与保存成为许多用…...
5分钟搞定局域网IP扫描:OpUtils保姆级配置教程(附常见问题排查)
5分钟搞定局域网IP扫描:OpUtils保姆级配置教程(附常见问题排查) 办公室里突然断网了?打印机死活连不上?新同事的电脑无法接入内网?作为中小企业IT运维人员,这些场景你一定不陌生。别急着打电话求…...
iBeebo:5个理由让你选择这款纯净高效的第三方微博客户端
iBeebo:5个理由让你选择这款纯净高效的第三方微博客户端 【免费下载链接】iBeebo 第三方新浪微博客户端 项目地址: https://gitcode.com/gh_mirrors/ib/iBeebo 在信息过载的数字时代,官方微博客户端日益臃肿的界面设计、无处不在的广告推送和复杂…...
FreeRTOS实战指南:从消息队列到内存管理,手把手解决嵌入式多任务难题
FreeRTOS实战指南:从消息队列到内存管理,手把手解决嵌入式多任务难题 1. 为什么嵌入式开发者需要FreeRTOS 在资源受限的嵌入式系统中,开发者常常面临这样的困境:既要处理实时性要求高的传感器数据采集,又要兼顾用户界面…...
