代码随想录算法训练营第五十天 | 123.买卖股票的最佳时机III 188. 买卖股票的最佳时机 IV
1. 买卖股票的最佳时机 III
123. 买卖股票的最佳时机 III - 力扣(LeetCode)
* 定义 5 种状态:
* 0: 没有操作, 1: 第一次买入, 2: 第一次卖出, 3: 第二次买入, 4: 第二次卖出
class Solution {public int maxProfit(int[] prices) {int length =prices.length;int[][] dp = new int[length][5];dp[0][0] = 0;dp[0][1] = -prices[0]; // 第一次持仓dp[0][2] = 0;dp[0][3] = -prices[0]; // 第二次持仓dp[0][4] = 0;for(int i = 1; i < length; i++){dp[i][0] = dp[i-1][0];dp[i][1] = Math.max(dp[i-1][1], dp[i-1][0] - prices[i]);dp[i][2] = Math.max(dp[i-1][2], dp[i-1][1] + prices[i]);dp[i][3] = Math.max(dp[i-1][3], dp[i-1][2] - prices[i]);dp[i][4] = Math.max(dp[i-1][4], dp[i-1][3] + prices[i]);}return dp[length-1][4];}
}
滚动数组(当前天直接用前一天)
不操作的状态可以省略,因为一定为0
class Solution {public int maxProfit(int[] prices) {int length =prices.length;int[] dp = new int[4];dp[0] = -prices[0]; // 第一次持仓dp[1] = 0;dp[2] = -prices[0]; // 第二次持仓dp[3] = 0;for(int i = 1; i < length; i++){dp[0] = Math.max(dp[0], 0 - prices[i]);dp[1] = Math.max(dp[1], dp[0] + prices[i]);dp[2] = Math.max(dp[2], dp[1] - prices[i]);dp[3] = Math.max(dp[3], dp[2] + prices[i]);}return dp[3];}
}
2. 买卖股票的最佳时机 IV
188. 买卖股票的最佳时机 IV - 力扣(LeetCode)
和 III 一个道理,只不过状态数变成了 2*k 个
注意遍历状态的时候, 第一个状态要单独拿出来(因为前面没有状态了),或者从第二个状态开始遍历
class Solution {public int maxProfit(int k, int[] prices) {int[] dp = new int[2*k];for(int j = 0; j < k; j++){dp[2*j] = -prices[0];}for(int i = 1; i < prices.length; i++){for(int j = 0; j < k; j++){if(j == 0){dp[0] = Math.max(dp[0], 0 - prices[i]); // 第1次持仓dp[1] = Math.max(dp[1], dp[0] + prices[i]); // 第1次不持仓}else{dp[2*j] = Math.max(dp[2*j], dp[2*j-1] - prices[i]); // 持仓dp[2*j + 1] = Math.max(dp[2*j + 1], dp[2*j] + prices[i]); // 不持仓}}}return dp[2*k-1];}
}
相关文章:
代码随想录算法训练营第五十天 | 123.买卖股票的最佳时机III 188. 买卖股票的最佳时机 IV
1. 买卖股票的最佳时机 III 123. 买卖股票的最佳时机 III - 力扣(LeetCode) * 定义 5 种状态: * 0: 没有操作, 1: 第一次买入, 2: 第一次卖出, 3: 第二次买入, 4: 第二次卖出 class Solution {public int maxProfit(int[] prices) {int length prices.l…...
详解window.print(),实现长列表打印分页
相信大家平时做项目时,打印需求很常见,但想把打印做好,还是要花点时间的。特别是长列表要分页的情况。 我们知道浏览原生 API window.print() 可以用于印当前窗口(window.document)视图内容。调用此方法会产生一个打印…...
使用Chatgpt编写的PHP数据库pdo操作类(增删改查)
摘要 将PDO封装成PHP类进行调用有很多好处,包括: 1、封装性和抽象性: 通过将PDO封装到一个类中,您可以将数据库操作逻辑与应用程序的其他部分分离开来,提高了代码的组织性和可维护性。这样,您只需在一个地…...
蓝桥杯2023年第十四届省赛真题-异或和之和--题解
目录 蓝桥杯2023年第十四届省赛真题-异或和之和 题目描述 输入格式 输出格式 样例输入 样例输出 【代码实现】 大家觉得写得可以的话,可以加入QQ群907575059. 蓝桥杯2023年第十四届省赛真题-异或和之和 时间限制: 3s 内存限制: 320MB 提交: 241 解决: 66 …...
Linux 常用命令学习笔记
Linux 常用命令学习笔记 文件操作 ls:列出当前目录下的文件和文件夹。 ls -l:以长格式显示文件和文件夹的详细信息。ls -a:显示所有文件,包括隐藏文件。 cd [目录]:切换到指定目录。pwd:显示当前工作目录…...
支撑电动汽车规模化,特来电智能化升级群充产品
9月26日,中国领先的充电网生态运营商特来电重磅发布智能群充4.0产品,标志着特来电群充产品体系进一步升级,充电行业迎来更高质量、更高性能的设备与系统,充电网基础设施将更好地支撑大规模电动汽车的发展。 群充技术路线引领充电…...
本次CTF·泰山杯网络安全的基础知识部分
简记23年九月参加的泰山杯网络安全的部分基础知识的题目,随时补充 1. 国密算法哪个属于公钥? SM2 a. 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法&#x…...
通信协议:Uart的Verilog实现(下)
4、UART接收器 UART接收器负责接收串行比特流,去除起始位和停止位,并以并行格式将数据保存到与主机数据总线相连的寄存器里。接收器无法获得发送时钟,因此尽管数据以标准比特率到达,但数据未必与接收主机内的时钟同步。同步问题可…...
嵌入式MCU都有什么高级用法?
嵌入式MCU都有什么高级用法? 您举的几个例子,确实是MCU外设的一些高端玩法。只是不知道您是否想过,既然这些机制是被 人设计出来的,那它就是种标准用法。从微控制器的发展历程来看,许多硬件机制都是有了实际 需求后才…...
热启动和冷启动是什么,区别
app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它ÿ…...
每日一题 494目标和(0-1背包)(灵神笔记)
0-1背包模版 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 当前操作?枚举第i个物品选还是不选,不选容量不变,选容量减少 子问题ÿ…...
软件测试工作步骤详情
软件测试步骤按照研发阶段一般分为5个部分:单元测试、集成测试、确认测试、系统测试、验收测试,下面将不同阶段需要的一些工作内容做一下梳理希望可以帮助到大家。 一、单元测试的内容:(白盒为主,黑盒为辅)…...
java项目之列车票务信息管理系统(ssm源码+文档)
项目简介 列车票务信息管理系统实现了以下功能: 管理员:个人中心、用户管理、车票信息管理、购票指南管理、管理员管理、论坛管理、我的收藏管理、系统管理、订单管理。前台首页:首页、车票信息、购票指南、我的收藏管理、论坛信息、我的、…...
【Pytorch笔记】3.数学运算
深度之眼官方账号 - 01-03-mp4-张量操作与线性回归 torch.add() 功能:逐元素计算inputalphaother。 torch.add(input,alpha1,other,outNone)input:tensor; alpha:other的系数,是个实数; other࿱…...
MeterSphere 监控方案
前言:在部署MeterSphere之后,很多时候需要看下MeterSphere服务的监控信息,虽然有监控告警脚本,但还不是太直观,所以就结合 PrometheusExporterGrafana 部署一套完整的MeterSphere监控方案。 首先我们先罗列一下需要监控…...
elementui-plus+ts+axios使用el-upload组件自定义上传
1.前言: 使用element ui有很多便捷之处,但是由于是封装的组件和自己写还是有些许的不一样,这里主要解决几个问题。 1. 如何获取子组件实例 2. 如何自定义上传方法 2.两个问题: ⛺️ 获取子组件实例 实际上vue一般通过ref获取子组…...
【STM32单片机】u8g2智能风扇设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能: 初始化后进入温度显示界面,系统初始状态为手动…...
Java中的IO流的缓冲流
不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴IO流体系结构🌴缓冲流1.提高效率的原理2.缓冲流的类型3.字符缓冲流两个特有方法 🌴总结 🌴IO流体系…...
7、SpringBoot_高级配置
一、配置高级 1.临时属性设置 1.1引出问题 如果目标电脑上8080端口已经使用,再次使用该端口会出现端口占用问题 解决方式 重新更换配置文件修改端口打包通过临时属性配置新端口更换配置文件 1.2添加临时属性配置 通过临时属性修改8080端口 java -jar 项目.jar…...
cocos2dx查看版本号的方法
打开文件:项目根目录\frameworks\cocos2d-x\docs\RELEASE_NOTES.md 知道引擎版本号的意义: 1.面试中经常被问到(面试官想知道你会不会查版本号,你会查也不一定会去看,如果你去看了说明你是一个有心人,或者想深入研究下…...
ElastAlert vs Prometheus:2024年日志告警与指标告警终极选型指南
ElastAlert vs Prometheus:2024年日志告警与指标告警终极选型指南 【免费下载链接】elastalert Easy & Flexible Alerting With ElasticSearch 项目地址: https://gitcode.com/gh_mirrors/el/elastalert 在当今复杂的IT环境中,有效的监控告警…...
C# 工业级温度监控软件:支持多PLC通信与实时曲线绘制
前言工业自动化领域,温度监控是保障生产安全与产品质量的核心环节。面对多台设备分散、数据孤岛严重的现状,开发一套高效、可视化的上位机系统显得尤为重要。本文将详细介绍一款基于 WinForms 与 S7.Net 开发的温度监控系统。该系统不仅实现了对多台西门…...
Beyond Compare 5 授权生成技术方案:基于密钥算法的永久授权实现指南
Beyond Compare 5 授权生成技术方案:基于密钥算法的永久授权实现指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 技术背景:破解文件对比工具授权限制的技术挑战 在现…...
Modbus转EtherCAT网关开发秘笈:用AX58100实现120个命令自动映射(Web配置全图解)
Modbus转EtherCAT网关开发实战:AX58100零代码配置与工业部署全指南 工业自动化领域正经历着从传统串行通信向实时以太网协议的转型浪潮。作为这场变革的核心枢纽,协议转换网关的性能直接决定了整个系统的响应速度和稳定性。本文将深入探讨如何利用AX5810…...
别再只盯着ONNX了!用PNNX把PyTorch模型轻松转成ncnn格式(安卓部署实战)
深度学习模型安卓部署实战:PNNX与ONNX转换工具深度对比 在移动端部署深度学习模型时,模型转换环节往往是开发者遇到的第一个技术瓶颈。许多团队习惯性地选择ONNX作为中间格式,却忽视了更高效的替代方案。本文将带您深入探索PNNX这一专为PyTor…...
ESP32智能语音助手创新实践:从技术原理到跨设备协同
ESP32智能语音助手创新实践:从技术原理到跨设备协同 【免费下载链接】xiaozhi-esp32 Build your own AI friend 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 随着物联网技术的飞速发展,智能语音交互已成为连接物理世界与数…...
wangEditor 5移动端兼容性深度解析:终极跨平台富文本编辑实战指南
wangEditor 5移动端兼容性深度解析:终极跨平台富文本编辑实战指南 【免费下载链接】wangEditor wangEditor —— 开源 Web 富文本编辑器 项目地址: https://gitcode.com/gh_mirrors/wa/wangEditor 在移动优先的时代,富文本编辑器的移动端兼容性已…...
OpenClaw定时任务:GLM-4.7-Flash自动生成日报与周报
OpenClaw定时任务:GLM-4.7-Flash自动生成日报与周报 1. 为什么需要自动化日报周报 每周五下午,我的心情总是特别复杂——既期待周末的到来,又头疼要花1-2小时整理本周工作内容。更不用说每天下班前,还要花15分钟写日报。这种重复…...
UART协议深度优化:如何用FIFO缓存解决高速串口丢包问题
UART协议深度优化:如何用FIFO缓存解决高速串口丢包问题 在嵌入式系统和工业控制领域,UART通信因其简单可靠的特性被广泛应用。但当波特率超过1Mbps时,传统设计常面临数据丢失的困扰。上周调试一个机器人关节控制器时,115200波特率…...
OmenSuperHub终极指南:5分钟掌握惠普游戏本性能优化技巧
OmenSuperHub终极指南:5分钟掌握惠普游戏本性能优化技巧 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 厌倦了官方Omen Gaming Hub的臃肿体验?想要一个纯净、高效的硬件控制工具?OmenSup…...
