代码随想录刷题记录day44 股票问题3 4

news2024/10/1 5:34:20

代码随想录刷题记录day44 股票问题3 4

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

在这里插入图片描述

思想

  1. dp数组定义

  2. 递推公式

dp[i][0] 第i天不操作股票手头最大的现金 i从0开始
dp[i][1] 第i天第一次持有股票的手头最大的现金
dp[i][1]= max:  i-1天不操作,第i天才买入:dp[i-1][0]-prices[0];i-1天已经持有勒:dp[i-1][1]

dp[i][2] 第i天第一次卖出股票的手头最大的现金
dp[i][2]=max : i-1天持有股票: dp[i-1][1]+prices[i]; i天没有操作:dp[i-1][2]

dp[i][3] 第i天第二次持有股票的手头最大的现金
dp[i][2]=max :i-1天第一次卖出股票勒,i天买入:dp[i-1][2]-prices[i]; i-1天还是第二次持有股票的状态,i天没有操作 dp[i-1][3]

dp[i][4] 第i天第二次卖出股票的手头最大的现金
dp[i-1][4]=max: i-1天第二次持有股票,i天卖出 : dp[i-1][3]+prices[i]; i天不操作 dp[i-1][4]
  1. 初始化

     int [][] dp=new int[prices.length][5];
     dp[0][0]=0;
     dp[0][1]=-prices[0];
     dp[0][2]=0;
     dp[0][3]=-prices[0];
     dp[0][4]=0;
    
  2. 遍历顺序

    依赖于前一个的状态

  3. 打印

在这里插入图片描述

代码

class Solution {
    public int maxProfit(int[] prices) {
        //1.dp数组的定义
        //dp[i][0] 第i天不操作股票手头最大的现金 i从0开始
        //dp[i][1] 第i天第一次持有股票的手头最大的现金
        //dp[i][1]= max:  i-1天不操作,第i天才买入:dp[i-1][0]-prices[0];i-1天已经持有勒:dp[i-1][1]

        //dp[i][2] 第i天第一次卖出股票的手头最大的现金
        //dp[i][2]=max : i-1天持有股票: dp[i-1][1]+prices[i]; i天没有操作:dp[i-1][2]

        //dp[i][3] 第i天第二次持有股票的手头最大的现金
        //dp[i][2]=max :i-1天第一次卖出股票勒,i天买入:dp[i-1][2]-prices[i]; i-1天还是第二次持有股票的状态,i天没有操作 dp[i-1][3]

        //dp[i][4] 第i天第二次卖出股票的手头最大的现金
        //dp[i-1][4]=max: i-1天第二次持有股票,i天卖出 : dp[i-1][3]+prices[i]; i天不操作 dp[i-1][4]

        //2.dp 递推公式


        //3.初始化
        int [][] dp=new int[prices.length][5];
        dp[0][0]=0;
        dp[0][1]=-prices[0];
        dp[0][2]=0;
        dp[0][3]=-prices[0];
        dp[0][4]=0;

        //4.遍历顺序
        for(int i=1;i<prices.length;i++){
            dp[i][0]=dp[i-1][0];
            dp[i][1]=Math.max(dp[i-1][0]-prices[i],dp[i-1][1]);
            dp[i][2]=Math.max(dp[i-1][1]+prices[i],dp[i-1][2]);
            dp[i][3]=Math.max(dp[i-1][2]-prices[i],dp[i-1][3]);
            dp[i][4]=Math.max(dp[i-1][3]+prices[i],dp[i-1][4]);
        }

        return dp[prices.length-1][4];
        
    }
}

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

在这里插入图片描述

思想

和上一题 的思想差不多,上一题是买卖2次,所以状态有5个

买卖k次,状态应该是2k+1个

用一个下标j来维护第i天不同次数的买入和卖出的状态

j+1表示买入状态

j+2表示卖出状态

for(int j=0;j<2*k;j+=2){
	dp[i][j+1]=Math.max(dp[i-1][j]-prices[i],dp[i-1][j+1]);//j+1表示买入状态 延续之前的状态 或者是之前没有买入,此次买入了
	dp[i][j+2]=Math.max(dp[i-1][j+1]+prices[i],dp[i-1][j+2]);
}

代码

class Solution {
    public int maxProfit(int k, int[] prices) {

        int[][] dp=new int[prices.length][2*k+1];

        for(int i=1;i<2*k;i+=2){
            dp[0][i]=-prices[0];
        }

        for(int i=1;i<prices.length;i++){
            for(int j=0;j<2*k;j+=2){
                dp[i][j+1]=Math.max(dp[i-1][j]-prices[i],dp[i-1][j+1]);//j+1表示买入状态 延续之前的状态 或者是之前没有买入,此次买入勒
                dp[i][j+2]=Math.max(dp[i-1][j+1]+prices[i],dp[i-1][j+2]);
            }
        }

        return dp[prices.length-1][2*k];
    }
}

参考:代码随想录

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

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

相关文章

港科夜闻|香港科技大学(广州)拟获批首个省级重点实验室

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科技大学(广州)拟获批首个省级重点实验室。2022年12月6日&#xff0c;广东省科学技术厅发布关于2023年度平台基地及科技基础条件建设、高水平科技期刊建设拟立项目清单的公示&#xff0c;香港科大(广州)申报的广东省通感…

「Spring Cloud Alibaba官方手册」首发爆火,Github上标星243k

几年前 Dubbo被 SpringCloud所取代&#xff0c;相同的剧本&#xff0c;可惜阿里巴巴和 Spring社区都是巨头&#xff0c;巨头之间战斗要考虑很多&#xff0c;于是它们想到了合作&#xff0c; SpringCloud与alibaba相结合&#xff0c;技术上有人负责更新新的组件&#xff0c;也还…

今年面试太难,我凭借这份Java架构面试指南,成功跳槽涨薪10K

见字如面&#xff0c;这里是阿鑫~ 时光飞逝&#xff0c;转眼2022已经快结束了&#xff0c;最近内卷严重&#xff0c;大环境并不是很好&#xff0c;相信很多小伙伴也在准备明年金三银四的面试计划 ​跳槽加薪 职场中加薪有个屡试不爽的方法&#xff0c;那就是跳槽 每每听到周围…

浮点数运算不精确的问题解决和注意事项(BigDecimal)

总结&#xff1a;浮点数运算不精确的问题本质上是在存储的时候就不精确&#xff0c;这个问题会持续到即使使用到专业的工具类BigDecimal来使用时&#xff0c;如果仅仅只是传double类型做入参时依然会导致运算不精确&#xff0c;所以即使在使用BigDecimal工具类进行构造时也要使…

论文浅尝 | Knowledge Graph Contrastive Learning for Recommendation

笔记整理&#xff1a;刘尧锟&#xff0c;天津大学硕士链接&#xff1a;https://arxiv.org/pdf/2205.00976.pdf动机知识图谱已被用作有用的辅助信息来提高推荐质量。在这些推荐系统中&#xff0c;知识图谱信息通常包含丰富的事实和项目之间的内在语义相关性。然而&#xff0c;此…

Python源码学习新手攻略

Python源码学习是许多编程初学者在学习Python过程中十分重要的一个必经步骤&#xff0c;不仅如此&#xff0c;一些有一定开发经验的程序员想要提升自身&#xff0c;也常常需要阅读并学习优秀核心技术栈的源码。那么我们应该如何开始Python源码学习呢&#xff1f;下面小编就来和…

自学Web前端开发学习讲解 – 入门篇

很多人都对web前端感兴趣&#xff0c;这一期主要聊关于如何入门学习Web前端开发的过程分享&#xff0c;此篇适合想入门初学者&#xff0c;大佬就不用看了。主要内容是以本人这一路自学web前端的一些经验和建议&#xff0c;学习哪些知识&#xff0c;以及如何正确的去学&#xff…

AI绘画火爆,到现在还只是冰山一角?AIGC掀起当代新艺术浪潮

前言&#xff1a; hello&#xff0c;大家好我是Dream。近日&#xff0c;各大社交平台掀起了一股“AI绘图”风潮&#xff0c;很多同学朋友纷纷在社交平台上晒出了属于自己的AI照片&#xff0c;一时间AI相关话题热度高涨。那对于AI绘画以及开启AI内容创作新时代的昆仑万维你究竟了…

东北大学2023分布式操作系统考试题目及答案

Note&#xff1a;答案仅供参考&#xff0c;自己所写&#xff0c;不是标准答案&#xff0c;若发现错误&#xff0c;请指正&#xff0c;谢谢&#xff01; 文章目录考试题目参考答案考试题目 1、简述分布式系统的设计目标中开放性的特点有哪些&#xff1f; 、 、 、 、 、 、 、…

​燕东微科创板上市:市值276亿 亦庄国投与京东方是股东

雷递网 雷建平 12月16日北京燕东微电子股份有限公司&#xff08;简称&#xff1a;“燕东微”&#xff0c;股票代码为&#xff1a;“688172”&#xff09;今日在科创板上市&#xff0c;燕东微本次发行17986.5617万股&#xff0c;发行价21.98元&#xff0c;募资总额39.56亿元。燕…

关于hcaptcha (vm wasm ob)三合一

该文章主要提供交流学习使用&#xff0c;请勿利用其进行不当行为&#xff01; 如本篇文章侵犯了贵公司的隐私&#xff0c;请联系我立刻删除&#xff01; 如因滥用解密技术而产生的风险与本人无关&#xff01; 1 Hcaptcha hCaptcha 旨在解决机器学习中最劳动密集型的问题&am…

毕业设计 - 基于 java web的网上花店销售系统设计与实现【源码+论文】

文章目录前言一、项目设计1. 模块设计数据流图功能模块2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 毕业设计项目: 网上花店销售系统的设计与实现 一、项目设计 1. 模块设计 数据流图 功能模块 1、首页&#xff08;主界面&#xff09; 提供简洁美观的主界…

Jenkins+Kubernetes企业级DevOps容器云平台

一、Kubernetes在DevOps中的作用 1、DevOps DevOps假导所有新的功能特性可以像流动的水一样,迭代到用户的终端,而水是不能讲流的,为了保证水流的质量,我们就必须在水流动的途中治理,直到最终交付到用户的手中。 DevOps是一套方法论、一系列的原则和实践,其主要目标为帮…

【Robot Framework】发送GET和POST请求

做接口自动化时&#xff0c;经常要使用GET与POST请求&#xff0c;那么如何使用RF发送对应的请求呢&#xff1f; 一、安装RequestsLibrary pip install robotframework-requests安装以后&#xff0c;导入到对应的测试套件或测试用例中. 本次主要介绍通过RequestsLibrary来实现…

JavaEE - JVM八股文(JVM内存区域划分,典型面试题,JVM类加载机制)

文章目录1. JVM运行时数据区&#xff08;内存区域划分&#xff09;2. JVM类加载机制常见面试题1. JVM运行时数据区&#xff08;内存区域划分&#xff09; JVM运行时数据区域也叫内存布局&#xff0c;但需要注意的时它和Java内存模型&#xff08;JMM&#xff09;不同&#xff0…

使用PyTorch进行知识蒸馏的代码示例

随着机器学习模型的复杂性和能力不断增加。提高大型复杂模型在小数据集性能的一种有效技术是知识蒸馏&#xff0c;它包括训练一个更小、更有效的模型来模仿一个更大的“教师”模型的行为。 在本文中&#xff0c;我们将探索知识蒸馏的概念&#xff0c;以及如何在PyTorch中实现它…

计算机毕设Python+Vue校园舆情监控系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C#修改富文本框(RichTextBox)指定内容颜色

1.前言 最近给客户做了一个协议解包与组包的工具&#xff0c;以便于他们给终端客户或者集成商使用&#xff0c;让客户能够快速集成产品协议&#xff0c;降低客户集成工作量&#xff0c;产品协议是基于JT/T808&#xff0c;但是有增加了自己的一些特殊修改。 客户使用的是C#开发…

数据库原理及MySQL应用 | 并发控制

无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制问题&#xff0c;MySQL通过多版本并发控制和加锁实现并发控制。 多用户并发执行事务访问同一个数据库时&#xff0c;可能引发脏写、脏读、不可重复读、幻读等一致性问题。并发事务访问相同记录的情况&#xff0…

Golang 【basic_leaming】数组

阅读目录Array(数组)数组定义数组的初始化方法一方法二方法三数组的遍历数组是值类型多维数组二维数组的定义二维数组的遍历数组练习题1、请求出一个数组的和以及平均值 for-range2、请求出一个数组的最大值&#xff0c;并得到对应的下标3、从数组 [1, 3, 5, 7, 8] 中找出和为 …