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

news/2024/9/23 15:22:45

https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/

这一题较难,难点是状态比较多,需要考虑两笔交易,则共5个状态需要被记录,用当前是否持有股票来划分子集进行计算

class Solution {public int maxProfit(int[] prices) {// 由于此题可以完成两笔交易,因此不只是只有一次持有和不持有,有两次,即四个状态+未交易过共5种状态// 因此一天可以有五种状态子集,f[i][0~4],0表示未交易过,1表示第一次持有2表示第一次不持有...// f[i][0]=f[i-1][0] ,直接转移即可,没有操作// f[i][1]=max(f[i-1][1],f[i-1][0]-prices[i])// f[i][2]=max(f[i-1][2],f[i-1][1]+prices[i])// f[i][3]=max(f[i-1][3],f[i-1][2]-prices[i])// f[i][4]=max(f[i-1][4],f[i-1][3]+prices[i])int[][] f=new int[prices.length+1][5];f[1][0]=0;f[1][1]=-prices[0];f[1][2]=0;f[1][3]=-prices[0];f[1][4]=0;for(int i=2;i<=prices.length;i++){f[i][0]=f[i-1][0];f[i][1]=Math.max(f[i-1][1],f[i-1][0]-prices[i-1]);f[i][2]=Math.max(f[i-1][2],f[i-1][1]+prices[i-1]);f[i][3]=Math.max(f[i-1][3],f[i-1][2]-prices[i-1]);f[i][4]=Math.max(f[i-1][4],f[i-1][3]+prices[i-1]);}return f[prices.length][4];   //最终状态是这个表达式,实际可能第一次卖出就达到最大值了,即f[prices.length][2],但是f[prices.length][4]是最大的集合,是包含f[prices.length]// 用更加通俗的道理:即第一次卖出达到最大了,可以再买,再买一次,也是最大值}   
}

最后的返回值,如同官方题解说的这样

 

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

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

相关文章

ComfyUI 基础教程(二) —— Stable Diffusion 文生图基础工作流及常用节点介绍

上一篇文章讲解述首次启动 ComfyUI 会自动打开一个最基础的文生图工作流。实际上,后续我们可以通过菜单选项,或者快捷键 ctrl + D来打开这个默认工作流。默认工作流如下:这是一个最基础的文生图工作流,本文通过对这个工作流的讲解,让大家对 ComfyUI 工作流有一个基本的认识…

学习笔记487—PDF页面拼接后大小不统一【已解决!】

Adobe PDF软件,页面拼接后大小不统一,怎么办? 一、问题: PDF页面拼接后大小不统一,怎么办?二、解决办法: 1)首先,点击“组织页面”。2)选中参考页面,并点击鼠标右键,随后选择下拉菜单中“裁剪页面”。 3)记录这个页面的大小(高度= 25.00厘米,宽度=27.00厘米)。 …

k8s工作负载控制器--Statefulset

目录一、概述二、引入"有状态"需求1、管理无状态服务的 Deployment 实现了什么1.1、创建 Deployment1.2、验证 Pod 数量1.3、配置更新策略(更新镜像版本)1.4、观察更新过程1.5、验证更新后 Pod 的状态1.6、回滚 Deployment2、新需求分析三、StatefulSet:面向有状态…

7个步骤,告诉你如何打造“爆品”

品牌升维的必经之路。► 高维君说: 爆品 = 大多数人X关键需求X有效营销 那么,到底如何打造爆品呢?高维学堂常驻导师张雷老师在课堂上详细分解了打造爆品的7个步骤,助力我们打造出“叫好又卖座”的产品。 来源 | 高维学堂《跨境爆品打造》高维学堂常驻导师 | 张雷编辑 | 高…

翻译[1]-主动噪声消除(ANC)算法研究

主动噪声消除(ANC)算法研究原文地址: [https://github.com/iancraz/ANC-Implementation/blob/master/README.md] 许可: MIT license 原作者: Ian C. Daz, Matas Fogg, Lisandro Alvarez, Manuel Dieguez摘要 现在,主动消噪技术已经被广泛应用于各个领域,从工业到医疗和消费产…

Serilog文档翻译系列(四) - 结构化数据

Serilog的结构化数据优势明显。首先,它允许你记录详细的上下文信息,便于问题追踪和分析。其次,结构化数据更易于查询和过滤,从而使日志分析更加高效Serilog 是一种序列化器。在许多情况下,它具有良好的默认行为,能够满足其目的,但有时也需要指示 Serilog 如何存储附加到…

C#自定义控件—指示灯

C#用户控件之指示灯 在体现通讯状态、运行状态等用一个靓眼的指示灯如何做?思路(GDI)外环用笔绘制(Pen),内圆用画刷(SolidBrush);两个方法(用笔画圆,用画刷填充圆的内部):绘制边界RectangleF定义的椭圆/圆DrawEllipse(Pen pen,RectangleF rect)填充RectangleF定义边…

从0认识竞品分析(附实战分析抖音)

什么是竞品分析?顾名思义,是对竞争对手的产品进行比较分析的过程,一种带有主观性的横向分析过程;通过对多个产品的整体架构、功能、商业模式、产品策略等多维度的横向对比分析,从而获得目的性的结论。那如何分析呢?我们这里按照下面几个点来一一展开:**明确目的,行业分…