当前位置: 首页 > news >正文

代码随想录算法训练营第五十天 | 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 - 力扣&#xff08;LeetCode&#xff09; * 定义 5 种状态: * 0: 没有操作, 1: 第一次买入, 2: 第一次卖出, 3: 第二次买入, 4: 第二次卖出 class Solution {public int maxProfit(int[] prices) {int length prices.l…...

详解window.print(),实现长列表打印分页

相信大家平时做项目时&#xff0c;打印需求很常见&#xff0c;但想把打印做好&#xff0c;还是要花点时间的。特别是长列表要分页的情况。 我们知道浏览原生 API window.print() 可以用于印当前窗口&#xff08;window.document&#xff09;视图内容。调用此方法会产生一个打印…...

使用Chatgpt编写的PHP数据库pdo操作类(增删改查)

摘要 将PDO封装成PHP类进行调用有很多好处&#xff0c;包括&#xff1a; 1、封装性和抽象性&#xff1a; 通过将PDO封装到一个类中&#xff0c;您可以将数据库操作逻辑与应用程序的其他部分分离开来&#xff0c;提高了代码的组织性和可维护性。这样&#xff0c;您只需在一个地…...

蓝桥杯2023年第十四届省赛真题-异或和之和--题解

目录 蓝桥杯2023年第十四届省赛真题-异或和之和 题目描述 输入格式 输出格式 样例输入 样例输出 【代码实现】 大家觉得写得可以的话&#xff0c;可以加入QQ群907575059. 蓝桥杯2023年第十四届省赛真题-异或和之和 时间限制: 3s 内存限制: 320MB 提交: 241 解决: 66 …...

Linux 常用命令学习笔记

Linux 常用命令学习笔记 文件操作 ls&#xff1a;列出当前目录下的文件和文件夹。 ls -l&#xff1a;以长格式显示文件和文件夹的详细信息。ls -a&#xff1a;显示所有文件&#xff0c;包括隐藏文件。 cd [目录]&#xff1a;切换到指定目录。pwd&#xff1a;显示当前工作目录…...

支撑电动汽车规模化,特来电智能化升级群充产品

9月26日&#xff0c;中国领先的充电网生态运营商特来电重磅发布智能群充4.0产品&#xff0c;标志着特来电群充产品体系进一步升级&#xff0c;充电行业迎来更高质量、更高性能的设备与系统&#xff0c;充电网基础设施将更好地支撑大规模电动汽车的发展。 群充技术路线引领充电…...

本次CTF·泰山杯网络安全的基础知识部分

简记23年九月参加的泰山杯网络安全的部分基础知识的题目&#xff0c;随时补充 1. 国密算法哪个属于公钥&#xff1f; SM2 a. 国产密码算法&#xff08;国密算法&#xff09;是指国家密码局认定的国产商用密码算法&#xff0c;目前主要使用公开的SM2、SM3、SM4三类算法&#x…...

通信协议:Uart的Verilog实现(下)

4、UART接收器 UART接收器负责接收串行比特流&#xff0c;去除起始位和停止位&#xff0c;并以并行格式将数据保存到与主机数据总线相连的寄存器里。接收器无法获得发送时钟&#xff0c;因此尽管数据以标准比特率到达&#xff0c;但数据未必与接收主机内的时钟同步。同步问题可…...

嵌入式MCU都有什么高级用法?

嵌入式MCU都有什么高级用法&#xff1f; 您举的几个例子&#xff0c;确实是MCU外设的一些高端玩法。只是不知道您是否想过&#xff0c;既然这些机制是被 人设计出来的&#xff0c;那它就是种标准用法。从微控制器的发展历程来看&#xff0c;许多硬件机制都是有了实际 需求后才…...

热启动和冷启动是什么,区别

app冷启动&#xff1a; 当应用启动时&#xff0c;后台没有该应用的进程&#xff0c;这时系统会重新创建一个新的进程分配给该应用&#xff0c; 这个启动方式就叫做冷启动&#xff08;后台不存在该应用进程&#xff09;。冷启动因为系统会重新创建一个新的进程分配给它&#xff…...

每日一题 494目标和(0-1背包)(灵神笔记)

0-1背包模版 有n个物品&#xff0c;它们有各自的体积和价值&#xff0c;现有给定容量的背包&#xff0c;如何让背包里装入的物品具有最大的价值总和&#xff1f; 当前操作&#xff1f;枚举第i个物品选还是不选&#xff0c;不选容量不变&#xff0c;选容量减少 子问题&#xff…...

软件测试工作步骤详情

软件测试步骤按照研发阶段一般分为5个部分&#xff1a;单元测试、集成测试、确认测试、系统测试、验收测试&#xff0c;下面将不同阶段需要的一些工作内容做一下梳理希望可以帮助到大家。 一、单元测试的内容&#xff1a;&#xff08;白盒为主&#xff0c;黑盒为辅&#xff09;…...

java项目之列车票务信息管理系统(ssm源码+文档)

项目简介 列车票务信息管理系统实现了以下功能&#xff1a; 管理员&#xff1a;个人中心、用户管理、车票信息管理、购票指南管理、管理员管理、论坛管理、我的收藏管理、系统管理、订单管理。前台首页&#xff1a;首页、车票信息、购票指南、我的收藏管理、论坛信息、我的、…...

【Pytorch笔记】3.数学运算

深度之眼官方账号 - 01-03-mp4-张量操作与线性回归 torch.add() 功能&#xff1a;逐元素计算inputalphaother。 torch.add(input,alpha1,other,outNone)input&#xff1a;tensor&#xff1b; alpha&#xff1a;other的系数&#xff0c;是个实数&#xff1b; other&#xff1…...

MeterSphere 监控方案

前言&#xff1a;在部署MeterSphere之后&#xff0c;很多时候需要看下MeterSphere服务的监控信息&#xff0c;虽然有监控告警脚本&#xff0c;但还不是太直观&#xff0c;所以就结合 PrometheusExporterGrafana 部署一套完整的MeterSphere监控方案。 首先我们先罗列一下需要监控…...

elementui-plus+ts+axios使用el-upload组件自定义上传

1.前言&#xff1a; 使用element ui有很多便捷之处&#xff0c;但是由于是封装的组件和自己写还是有些许的不一样&#xff0c;这里主要解决几个问题。 1. 如何获取子组件实例 2. 如何自定义上传方法 2.两个问题&#xff1a; ⛺️ 获取子组件实例 实际上vue一般通过ref获取子组…...

【STM32单片机】u8g2智能风扇设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能&#xff1a; 初始化后进入温度显示界面&#xff0c;系统初始状态为手动…...

Java中的IO流的缓冲流

不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 &#x1f334;IO流体系结构&#x1f334;缓冲流1.提高效率的原理2.缓冲流的类型3.字符缓冲流两个特有方法 &#x1f334;总结 &#x1f334;IO流体系…...

7、SpringBoot_高级配置

一、配置高级 1.临时属性设置 1.1引出问题 如果目标电脑上8080端口已经使用&#xff0c;再次使用该端口会出现端口占用问题 解决方式 重新更换配置文件修改端口打包通过临时属性配置新端口更换配置文件 1.2添加临时属性配置 通过临时属性修改8080端口 java -jar 项目.jar…...

cocos2dx查看版本号的方法

打开文件&#xff1a;项目根目录\frameworks\cocos2d-x\docs\RELEASE_NOTES.md 知道引擎版本号的意义&#xff1a; 1.面试中经常被问到(面试官想知道你会不会查版本号&#xff0c;你会查也不一定会去看&#xff0c;如果你去看了说明你是一个有心人&#xff0c;或者想深入研究下…...

R 和 Python 数据可视化必备库的精华指南

原文&#xff1a;towardsdatascience.com/the-essential-guide-to-r-and-python-libraries-for-data-visualization-33be8511c976 成为某些编程语言的专业人士是每位有志于数据科学的专业人士的目标。在无数语言中达到一定水平是每个人的关键里程碑。 对于数据工程师来说&…...

java微服务驱动的社区平台:友猫社区的功能模块与实现逻辑

一、项目概述 友猫社区平台是由宠友信息技术有限公司研发的一体化社区生态系统&#xff0c;结合了内容分享、即时通讯、社交关系链与商城电商等功能。平台采用前后端分离架构&#xff0c;以高可扩展性、灵活配置与多端兼容性为设计核心&#xff0c;能够适应不同类型的企业及创…...

终极简单指南:如何用Seraphine英雄联盟助手快速提升排位胜率

终极简单指南&#xff1a;如何用Seraphine英雄联盟助手快速提升排位胜率 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 想象一下这样的场景&#xff1a;排位赛开始前&#xff0c;你正手忙脚乱地查询对手战绩…...

树莓派Pico舵机控制库picoclaw:从PWM原理到多舵机机器人应用

1. 项目概述&#xff1a;一个为树莓派Pico量身打造的舵机控制库如果你玩过树莓派Pico&#xff0c;并且尝试过用它来控制舵机&#xff0c;那你大概率会遇到一个头疼的问题&#xff1a;Pico的MicroPython固件本身并没有内置专门的舵机控制库。这意味着你需要自己动手&#xff0c;…...

Chunkhound:基于语义块与统一IR的智能代码理解框架解析

1. 项目概述&#xff1a;从“代码块猎犬”到智能代码理解 最近在琢磨一个挺有意思的开源项目&#xff0c;叫 chunkhound/chunkhound 。光看名字&#xff0c;你可能会联想到某种嗅觉灵敏的猎犬&#xff0c;没错&#xff0c;它的定位就是代码世界里的“猎犬”&#xff0c;专门负…...

OpenCV 4.x/5.x 在Ubuntu 22.04上安装后,CMake项目死活找不到库?一个环境变量就搞定

OpenCV 4.x/5.x 在Ubuntu 22.04上安装后CMake项目找不到库的终极解决方案 当你满怀期待地在Ubuntu 22.04上安装了最新版的OpenCV&#xff0c;准备开始你的计算机视觉项目时&#xff0c;却遭遇了CMake无法找到OpenCV库的尴尬局面。这种"明明安装了却找不到"的情况&…...

基于CircuitPython与BLE构建多探头无线温度监测系统

1. 项目概述&#xff1a;一个无线温度监控的“瑞士军刀” 如果你和我一样&#xff0c;喜欢在周末慢烤一块牛排&#xff0c;或者沉迷于培养天然酵母做面包&#xff0c;那你一定理解同时盯着好几个温度计的烦恼。厨房里烟雾缭绕&#xff0c;烤箱里正烤着东西&#xff0c;发酵箱里…...

基于SpringAI开发的通用RAG脚手框架,适配各种场景

RAG 业务落地开发指导 本文面向后续把这套 RAG 能力接入业务系统的开发者&#xff0c;重点回答三件事&#xff1a; 上游业务请求怎么进入 RAG。RAG 内部各组件怎么串起来。数据分别存到 MySQL、文件存储、向量库和搜索引擎的哪里。 1. 总体边界 独立工程保留的是一套完整 R…...

【限时开放】建筑AI效果图「可信度认证」白皮书(含结构合理性AI校验算法、日照模拟误差阈值、施工图级细节识别SOP)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;建筑AI效果图“可信度认证”白皮书发布背景与核心价值 近年来&#xff0c;AIGC技术在建筑设计领域爆发式应用&#xff0c;大量AI生成的效果图被用于方案汇报、客户沟通甚至报建材料。然而&#xff0c;…...

明日方舟游戏资源库:2000+高清素材的完整获取与应用指南

明日方舟游戏资源库&#xff1a;2000高清素材的完整获取与应用指南 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 还在为寻找高质量的明日方舟游戏素材而烦恼吗&#xff1f;无论是创作…...