代码随想录刷题|LeetCode 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

news2024/10/2 20:27:38

目录

309.最佳买卖股票时机含冷冻期

思路

1、确定dp数组以及下标含义

2、确定递推公式

3、初始化

 4、遍历顺序

5、获取结果

最佳买卖股票时机含冷冻期

714.买卖股票的最佳时机含手续费

思路

买卖股票的最佳时机含手续费


309.最佳买卖股票时机含冷冻期

题目链接:力扣

思路

1、确定dp数组以及下标含义

dp[i][j] 表示:第 i 天状态为 j , 手中的最大现金数位 dp[i][j]

这道题目就是状态不好分清

状态分析:

  • 状态一:持有股票(今天刚买入持有股票,或者是之前就买入了股票然后没有进行操作,一直持有)
  • 未持有股票状态,有两种未持有股票的状态
    • 状态二:已经卖出了股票,度过了冷冻期,一直没有操作,保持未持有股票状态
    • 状态三:今天卖出股票,成为未持有股票状态
  • 状态四:今天为冷冻期,但冷冻期状态不可持续,只有一天

2、确定递推公式

状态一:第 i 天是持有股票状态

        成为这种状态,要么之前已经买过了,要么今天买(今天可以买,要么前一天是冷冻期,要么前一天还是未持有股票状态并且多了冷冻期)

  

  • 情况一:之前已经买入了股票,dp[i][0] = dp[i - 1][0]
  • 情况二:今天买
    • 前一天是冷冻期:dp[i][0] = dp[i - 1][3] - prices[i]
    • 前一天是未持有状态:dp[i][0] dp[i - 1][1] -prices[i]

        所以 dp[i][0] 在三种情况中取最大的

状态二:第 i 天是未持有股票状态,并且过了冷冻期

        成为这种状态,要么前一天就是状态二(未持有股票状态,并且过了冷冻期),要么前一天是冷冻期(状态四),今天就成为了状态二

  • 情况一:前一天已经是状态二,dp[i][1] = dp[i - 1][1]
  • 情况二:前一天是冷冻期,dp[i][1] = dp[i - 1][3]

        所以dp[i][1] 在这两种情况中取最大值

状态三:第 i 天是未持有股票状态,还没过冷冻期,今天刚卖出

        成为这种状态,是今天刚卖出股票,所以前一天是持有股票状态的,只能从状态一获取到

  • 情况:前一天是持有股票状态,dp[i][2] = dp[i - 1][0] + prices[i]

状态三:第 i 天是冷冻期

        成为这种状态,就是前一天刚卖出股票,只能从状态三获得到

  • 情况:前一天卖股票,dp[i][3] = dp[i - 1][2]

3、初始化

        和所有买卖股票的题目一样,当天的状态都是从前一天的情况中获得的,所以应该将dp[0] 的状态全部进行初始化

  • 状态一:持有股票状态,dp[0][0] = -prices[0]
  • 状态二、状态三、状态四:未持有股票状态,dp[0][0] = 0

 4、遍历顺序

        从前向后进行遍历

5、获取结果

        这里与前面不同的是,要获取未持有股票状态下所有值的最大值

最佳买卖股票时机含冷冻期

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

        // 创建dp数组
        int len = prices.length;
        int[][] dp = new int[len][4];

        // 初始化dp数组
        dp[0][0] = -prices[0];

        // 推导递推公式
        for (int i = 1; i < len; i++) {
            dp[i][0] = Math.max(dp[i-1][0],Math.max(dp[i-1][1] - prices[i],dp[i-1][3] - prices[i]));
            dp[i][1] = Math.max(dp[i-1][1],dp[i-1][3]);
            dp[i][2] = dp[i-1][0] + prices[i];
            dp[i][3] = dp[i-1][2];
        }

        // 返回结果
        return Math.max(dp[len-1][1],Math.max(dp[len-1][2],dp[len-1][3]));
    }
}

714.买卖股票的最佳时机含手续费

题目链接:力扣

思路

        这道题和 122.买卖股票的最佳时机|| 其实是一样的,只是在卖出的时候多付一下手续费就可以,最多买卖的次数,根据天数就可以得出

买卖股票的最佳时机含手续费

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

        // 创建的dp[]数组
        int[][] dp = new int[prices.length][2];

        // 初始化dp数组
        dp[0][0] = -prices[0];
        dp[0][1] = 0;

        // 推导dp数组
        for (int i = 1; i < prices.length; i++) {
            dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]-prices[i]);
            dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]+prices[i] -fee);
        }

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

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

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

相关文章

Kafka的存储机制和可靠性

Kafka存储机制前言一、Kafka 存储选择二、Kafka 存储方案剖析三、Kafka 存储架构设计四、Kafka 日志系统架构设计4.1、Kafka日志目录布局4.2、Kafka磁盘数据存储五、Kafka 可靠性5.1、Producer的可靠性保证5.1.1、kafka 配置为 CP(Consistency & Partition tolerance)系统5…

【正厚软件】0基础学IT,来Linux的发展历史吧

本文来源&#xff1a;正厚软件沙老师 Linux 的发展历史 1991年林纳斯.托瓦兹开发了Linux内核&#xff0c;宣布它的诞生。 1999年&#xff0c;IBM宣布于RedHat公司建立伙伴关系&#xff0c;以确保RedHat在IBN机器上的正确运行。 2001年&#xff0c;IBM决定投入10亿美元扩大Linux…

光源基础(4)——如何选择光源及各种打光结构

如何选择和设计光源方案 打光的首要目的是把目标显现出来&#xff0c;同时把背景和干扰信息尽可能地过滤掉或者淡化&#xff0c;这样就可以得到有利于处理的图像&#xff0c;整个系统的精度和稳定性也可以得到必要的保证。 基本思路 如右图所示,光照射到物体表面之后,会发生一系…

Cadence Allegro PCB设计88问解析(十九) 之 Allegro中文字大小设置

个学习信号完整性仿真的layout工程师 在PCB投板之前&#xff0c;经常会进行丝印调整。当然有的单板设计&#xff0c;比如手机这种高密度单板是没有丝印的。但是在绝多数的PCB上是添加丝印的&#xff0c;为了方便前期的测试。丝印也就是我们常说的器件的位号&#xff0c;还包括一…

线上线程池配置错误导致服务故障

背景 某个早高峰&#xff0c;服务大量抛出线程拒绝的异常&#xff0c;同时没有触发自动扩容&#xff0c;损失了大量请求&#xff0c;影响了单量 原因分析 5why分析法 1、为什么服务抛出线程拒绝&#xff1f; rpc线程池设置为了256&#xff0c;故障期间线程处理慢&#xff0c…

【华秋Nidec尼得科】滑动开关CL-SB的应用

01 什么是滑动开关 滑动开关是用于选择、接通或断开电路的较成熟技术之一, 但由于其纯机电性质, 作为控制或交互机器或过程的某个方面的一种低成本和可靠手段&#xff0c;在现今仍然广为使用。滑动开关被设计成由人的手指驱动, 通常用于工业、商业、电信和消费类应用, 为人与机…

hadoop 3.x大数据集群搭建系列8- 一些辅助的shell脚本

文章目录一. jps查看各个节点后台进程二. 启停hadoop集群三. 群起zookeeper集群脚本zk.sh四. 同步文件五. 启动停止整个集群一. jps查看各个节点后台进程 我们经常需要查看各个节点的进程情况 vi jps.sh #!/bin/bash for i in hp5 hp6 hp7 do echo -------------------------…

MATLAB绘图合集:fcontour绘制隐函数等高线图

本文主要介绍隐函数等高线图的绘制。 说明 fcontour(f) 根据 x 和 y 的默认区间 [-5 5] 和 z 的固定级别值绘制 z f(x,y) 函数的等高线。 fcontour(f,xyinterval) 将在指定区间绘图。要对 x 和 y 使用相同的区间&#xff0c;请将 xyinterval 指定为 [min max] 形式的二元素向量…

单视频播放量超20万的公开课配套教材,猫书来了~

吹爆、强推、比刷剧还爽、一生推、传疯了&#xff01; 很难想象&#xff0c;网友们会用这些词来形容一个纯分享深度强化学习基础知识的视频课。 在 B 站上搜索 “深度强化学习”&#xff0c;在排名 TOP 10 的相关课程中&#xff0c;有 4 个是王树森老师的 Reinforcement Learni…

基于CFD的车辆进气系统流场仿真与分析

目 录 摘 要 I ABSTRACT II 第1章 绪论 1 1.1研究背景 1 1.2研究现状 2 1.2.1国外的研究概况 2 1.2.2国内的研究概况 3 1.3研究思路及方法 4 第2章 车辆进气系统流场消声元件设计 6 2.1进气系统概述 6 2.1.1进气系统结构及工作原理 6 2.1.2进气噪声的产生机理 7 2.2进气消声元件…

编译原理期末总结

思维导图&#xff1a; 引论 编译程序的过程&#xff1a; 词法分析——>语法分析——>语义分析——>中间代码生成——>代码优化——>目标代码生成 其中中间代码生成和代码优化不是必要的。 文法和语言 1.巨型和句子的区别 句型>句子,句子是终结符串&am…

两周内创作纪念日——stay hungry stay foolish

&#x1f4eb;作者简介&#xff1a;咸鱼爱搞机 &#x1f4eb; 热衷分享&#xff0c;喜欢原创~ 关注我会给你带来一些不一样的认知和成长 &#x1f525;如果觉得此文还不错的话&#xff0c;还请&#x1f44d;关注、点赞、收藏三连支持&#x1f44d;一下博主 机缘 说来也巧&…

LeetCode 1769. 移动所有球到每个盒子所需的最小操作数

【LetMeFly】1769.移动所有球到每个盒子所需的最小操作数 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/ 有 n 个盒子。给你一个长度为 n 的二进制字符串 boxes &#xff0c;其中 boxes[i] 的值为 0 表…

D. Vupsen, Pupsen and 0(思维 + 从小部分入手(由小推大))

Problem - 1582D - Codeforces Vupsen和Pupsen被赠予一个整数数组。由于Vupsen不喜欢数字0&#xff0c;他把数组中所有等于0的数字都扔掉了。结果&#xff0c;他得到一个长度为n的数组a。 相反&#xff0c;Pupsen喜欢数字0&#xff0c;当他看到没有0的数组时&#xff0c;他很…

【Linux系统】第三篇:Linux中软件包管理器yum的使用

文章目录一、yum1、 什么是软件包和软件包管理器2、 什么是yum3、 Linux下软件安装的几种方式4、 使用yum的注意事项5、 yum的使用二、Linux / Windows下的数据互传1、 lrzsz的安装2、rzsz工具3、将Windows的数据传到Linux中4、将Linux的数据传到Windows中三、yum源配置文件1、…

linux下命令操作

grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索 eg: grep success * /*查找当前目录下面所有文件里面含有success字符的文件 14. kill 可以杀死某个正在进行或者已经是dest状态的进程 eg; ps ax 15. passwd 可以设置口令 16. history 用户用过的命令 eg: …

光源基础(1)——常见光源性能比对和好图像评价指标

机器视觉系统的核心部分是&#xff1a;&#xff08;1&#xff09;图像的采集 (如何得到一幅好的图片)和&#xff08;2&#xff09;图像的处理(如何找到最有效率、最准确的算法) 所有的信息均来源于图像&#xff0c;图像质量对整个视觉系统极为关键。 目前视觉行业中用于图像处理…

nltk报错punkt 缺失 Error Loading Error11004

问题描述 在运行NLTK的时候报错了&#xff0c;找不到punkt 文件&#xff0c;运行代码nltk.dowload(punkt也是没有用。 后面手动安装好了punkt后又缺了averaged_percentage_tragger _ 最后还是手动下载最可行 &#xff0c;报错截图如下, punkt Error 报错截图 averaged_percen…

小米8 SE刷机安卓13

警告&#xff1a;这些说明仅在您精确遵循每个部分和步骤时才有效。 失败后不要继续&#xff01;基本要求 在实际遵循说明之前&#xff0c;请至少通读一次说明&#xff0c;以避免因错过任何步骤而导致的任何问题&#xff01;确保您的计算机具有 adb 和fastboot。可以找到设置说明…

SpringSecurity(二十一)--OAuth2:实现资源服务器(中)实现带有JdbcTokenStore的黑板模式

一、前言 本章将实现授权服务器和资源服务器使用共享数据库的应用程序。这一架构方式被称为黑板模式。这一架构方式被称为黑板模式。为什么叫黑板模式呢&#xff1f;因为可以将其视为使用黑板管理令牌的授权服务器和资源服务器。这种颁发和验证令牌的方法的优点是消除了资源服…