【动态规划part11】| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

news2024/11/15 13:54:31

目录

🎈LeetCode123.买卖股票的最佳时机III  

🎈LeetCode188.买卖股票的最佳时机IV 


🎈LeetCode123.买卖股票的最佳时机III  

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

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

 

public int maxProfit(int[] prices) {
        // dp[i][0] 第i天第一次持有股票的最大利润
        // dp[i][1] 第i天第一次不持有股票的最大利润
        // dp[i][2] 第i天都二次持有股票的最大利润
        // dp[i][3] 第i天第二次不持有股票的最大利润
        int[][] dp=new int[prices.length][4];
        // dp[i][0]=Math.max(dp[i-1][0],-prices[i]);
        // dp[i][1]=Math.max(dp[i-1][1],prices[i]+dp[i-1][0]);
        // 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[0][0]=-prices[0];
        dp[0][1]=0;
        dp[0][2]=-prices[0];
        dp[0][3]=0;
        for(int i=1;i<prices.length;i++){
            dp[i][0]=Math.max(dp[i-1][0],-prices[i]);
            dp[i][1]=Math.max(dp[i-1][1],prices[i]+dp[i-1][0]);
            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]);
        }
        return dp[prices.length-1][3];
    }

🎈LeetCode188.买卖股票的最佳时机IV 

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

给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多可以买 k 次,卖 k 次。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

 

public int maxProfit(int k, int[] prices) {
        int[][] dp=new int[prices.length][2*k+1];
        for(int i=1;i<=k*2;i+=2){
            dp[0][i]=-prices[0];
        }
        for(int i=1;i<prices.length;i++){
            for(int j=1;j<=2*k;j++){
                if(j%2==0){
                    dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-1]+prices[i]);
                }else{
                    dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-1]-prices[i]);
                }
            }
        }
        return dp[prices.length-1][2*k];
    }

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

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

相关文章

X99双路主机28核56线程电脑配置选购与系统装机详细流程(附带资源)

文章目录 前期调研&#xff08;包含配件详细信息&#xff09;装机过程推荐学习视频实践过程 系统装机&#xff08;含资源详细过程&#xff09;提前准备&#xff08;制作系统盘工具以及ISO系统镜像&#xff09;实践过程步骤一&#xff1a;使用Rufsus工具&#xff0c;选择ISO文件…

记一次 .NET 某设备监控系统 死锁分析

一&#xff1a;背景 1. 讲故事 上周看了一位训练营朋友的dump&#xff0c;据朋友说他的程序卡死了&#xff0c;看完之后发现是一例经典的死锁问题&#xff0c;蛮有意思&#xff0c;这个案例算是学习 .NET高级调试 入门级的案例&#xff0c;这里和大家分享一下。 二&#xff…

【原理图专题】OrCAD Capture原理图设计差异对比

在我们进行硬件设计时,往往会遇到项目上的变更。比如更换了替代料、电路错误、新需求等等,这些有的需要动用到原理图,而动到原理图往往很容易出错,特别是已经量产的产品,我们可以通过BOM对比等方式来查看变更。那是否有一种其他方式能直接进行原理图对比呢? 其中对比功能…

桥接模式——处理多维度变化

1、简介 1.1、概述 桥接模式是一种很实用的结构型设计模式。如果软件系统中某个类存在两个独立变化的维度&#xff0c;通过该模式可以将这两个维度分离出来&#xff0c;使两者可以独立扩展&#xff0c;让系统更加符合单一职责原则。与多层继承方案不同&#xff0c;它将两个独…

【Linux】更换jdk版本

目录 一、前言二、查看jdk版本号1、项目中的版本号&#xff08;pom.xml&#xff09;2、服务器中的版本号 三、更换jdk版本1、创建java文件夹2、下载并解压JDK安装包①、下载jdk安装包②、移动到创建好的/usr/local/java路径下③、解压jdk安装包 四、删除原来的jdk版本1、删除原…

Java虚拟机——线程安全与锁优化

1 线程安全 当多个线程同时访问一个对象时&#xff0c;如果不用考虑这些线程在运行时环境下的调度和交替执行&#xff0c;也不需要进行额外的同步&#xff0c;或者在调用方进行任何其他的协调操作。调用这个对象的行为都可以获得安全的结果&#xff0c;就称这个对象是线程安全…

从零开始理解Linux中断架构(23)中断运行临界区和占先调度

Linux在内核中定义了6种运行临界区。 in_interrupt in_interrupt在驱动中使用频率最高的函数了,in_interrupt()就是指示Core是否正在中断处理中,包含了硬中断,软中断运行临界区。如果在中断处理中,则不能调用__do_softirq执行软中断处理。硬中断中不可调度不可中断,所有…

智慧园区安保人员巡更巡检解决方案,蓝牙信标主动式蓝牙定位导航系统

一、需求分析 目前&#xff0c;大部分写字楼&#xff0c;工厂&#xff0c;学校&#xff0c;银行&#xff0c;车站等场景对安保人员的管理依然靠手填单子记录作业情况&#xff0c;在缺乏信息化手段的情况下&#xff0c;靠人员自觉性或者RFID巡更棒&#xff0c;在这些传统方式下…

2023 年牛客多校第四场题解

A Bobo String Construction 题意&#xff1a;给定一个 01 01 01 字符串 t t t&#xff0c;构造一个长度为 n n n 的 01 01 01 串 s s s&#xff0c;使得 t t t 在 c o n c a t ( t , s , t ) {\rm concat}(t, s, t) concat(t,s,t) 中仅出现两次。多测&#xff0c; 1 ≤…

Android杂录 语音转文字功能 python混合开发环境搭建 priv-app开机赋予麦克风权限 HDMI与麦克风同时工作配置

专栏目录: 高质量文章导航-持续更新中_GZVIMMY的博客-CSDN博客 一.语音转文字功能 软件架构 硬件架构: 耳机接口 报错类型: AudioFlinger could not create record track, status: -1 Androi

【雕爷学编程】Arduino动手做(175)---机智云ESP8266开发板模块7

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

FreeRTOS之互斥量

什么是互斥量&#xff1f; 在多数情况下&#xff0c;互斥型信号量和二值型信号量非常相似&#xff0c;但是从功能上二值型信号量用于同步&#xff0c; 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别&#xff0c;互斥型信号量可以有效解决优先级…

Python(四十八)列表的特点

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

基于SpringBoot+Vue的藏区特产销售平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

python调用百度ai将图片/pdf识别为表格excel

python调用百度ai将图片识别为表格excel 表格文字识别(异步接口)图片转excel 表格文字识别V2图片/pdf转excel通用 表格文字识别(异步接口) 图片转excel 百度ai官方文档&#xff1a;https://ai.baidu.com/ai-doc/OCR/Ik3h7y238 使用的是表格文字识别(异步接口)&#xff0c;同步…

安装taghighlight遇到的需要python问题

起因&#xff1a; 在vim里面使用taghighlight时&#xff0c;输入命令:UpdateTypesFile后出现下面的提示&#xff1a; 看了一下&#xff0c;系统里面有安装python3.10&#xff0c;为什么还提示要安装python2.6呢&#xff1f;开始以为是python3.10的版本与taghighlight不匹配&am…

Linux常用命令——dpkg-split命令

在线Linux命令查询工具 dpkg-split Debian Linux中将大软件包分割成小包 补充说明 dpkg-split命令用来将Debian Linux中的大软件包分割成小软件包&#xff0c;它还能够将已分割的文件进行合并。 语法 dpkg-split(选项)(参数)选项 -S&#xff1a;设置分割后的每个小文件最…

LeetCode[1302]层数最深叶子节点的和

难度&#xff1a;Medium 题目&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;请你返回 层数最深的叶子节点的和 。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,4,5,null,6,7,null,null,null,null,8] 输出&#xff1a;15示例 2&#xff1a; 输入&#xff1a;r…

HTTP——二、简单的HTTP协议

本章将针对 HTTP 协议结构进行讲解&#xff0c;主要使用HTTP/1.1版本。学完这章&#xff0c;想必大家就能理解 HTTP 协议的基础了。 HTTP 一、HTTP协议用于客户端和服务器之间的通信二、通过请求和响应的交换达成通信三、HTTP是不保存状态的协议四、请求URI定位资源五、告知服…

GAMES101 笔记 Lecture12 Geometry3

目录 Mesh Operations: Geometry ProcessingMesh Subdivision (曲面细分)Mesh Simplification(曲面简化)Mesh Regularization(曲面正则化) Subdivision(细分)Loop Subdivision(Loop细分)如何来调整顶点位置呢&#xff1f;Loop Subdivision Result (Loop细分的结果) Catmull-Cla…