【算法练习Day43】最佳买卖股票时机含冷冻期买卖股票的最佳时机含手续费

news2024/11/27 0:24:08

在这里插入图片描述

​📝个人主页:@Sherry的成长之路
🏠学习社区:Sherry的成长之路(个人社区)
📖专栏链接:练题
🎯长路漫漫浩浩,万事皆有期待

文章目录

  • 最佳买卖股票时机含冷冻期
  • 买卖股票的最佳时机含手续费
  • 总结:

买卖股票的最后一期了,第一道含冷冻期难一点,第二道含手续费不难,就是之前买卖股票II的模板。

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

309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode)

这道题难在需要定义更多的dp数组针对第二维状态的定义,它不同于之前讲的那些题。

dp数组的含义:dp【i】【0】还是和之前一样,它代表了持有股票的状态,即包含了买入股票和以前买入现在持有的一个状态。dp【i】【1】我们将其定义为卖出股票后的状态即它是仅代表卖出去股票之后且还未购买新股票的一个状态。dp【i】【2】代表了第i天当天卖出股票的状态,dp【i】【3】代表了卖出股票后的那天冷冻期。我们把之前能够同时表示卖出股票和卖出股票后未持有股票的状态拆分开来,分成了单独的两部分,这是因为买卖股票有一天冷冻期,而我们需要明确确定冷冻期是哪一天,这时我们是需要知道哪一天卖出了股票才能确定冷冻期,这在后面的递推公式也能展示出来。

递推公式:dp【i】【0】根据含义分析一下,它可以由什么状态推出来?持有股票的前一天(也就是继承前一天),冷冻期的后一天再买股票,和冷冻期之后的某一天购买股票,所以说可以由三个状态推出来。

dp【i】【0】=max(dp【i-1】【0】,dp【i-1】【3】-prices【i】,dp【i-1】【1】-prices【i】)

值得关注的是,dp【i-1】【3】-prices【i】,他确实代表了冷冻期的后一天购买股票,只不过这冷冻期后一天购买股票,用的是冷冻期时候所拥有的钱。

dp【i】【1】同样也是由它的前一天的状态和前一天是冷冻期,第一种情况推出不用多说了,很正常的推出,第二种就是新加入的冷冻期概念由于该天的前一天是冷冻期不能购买股票,所以如果当天也没购买那自然就是卖出后未持有股票的状态。

dp【i】【2】是卖出股票的状态,那只能一种情况dp【i-1】【0】+prices【i】也就是持有股票的情况下卖出去。

dp【i】【3】是冷冻期也是一种情况,dp【i-1】【2】,冷冻期啥也干不了所以也就是卖出股票时候有多少钱就是多少钱。

dp数组初始化:dp【0】【0】=-prices【0】就是第一天买股票,就是这么多钱。

其余的状态我们初始化多少呢?其实其他状态在第一天都是非法的状态,我们可以这样想,第一天买第一天卖那肯定就是不赚钱就是0,而不持有股的状态也是0,冷冻期和卖出股票时候一样所以也是0。更靠谱一点的数学推理,我们可以带入递推公式,按情况来初始化,这一方面大家也可以把数据自己带入,试一试,也就知道了第一次初始化应该为多少。

遍历顺序:是正常的从前向后

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>>dp(prices.size(),vector<int>(4,0));
        dp[0][0]=-prices[0];
        for(int i=1;i<prices.size();i++){
            dp[i][0]=max(dp[i-1][0],max(dp[i-1][3]-prices[i],dp[i-1][1]-prices[i]));
            dp[i][1]=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 max(dp[prices.size()-1][1],max(dp[prices.size()-1][2],dp[prices.size()-1][3]));
    }
};

这道题因为状态多,要确定每个状态的含义,只有确定清楚才能够解出题解。

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

714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)

这道题也是可以重复买卖股票的题,与买卖股票II的唯一区别仅在于每次买卖需要交一次手续费,这其实就购买股票时候加上一次手续费,就可以了,代码方面没有大改动,不懂得去看上两篇文章。

class Solution {
public:
    int maxProfit(vector<int>& prices, int fee) {
        vector<vector<int>>dp(prices.size(),vector<int>(2,0));
        dp[0][0]=-prices[0]-fee;
        for(int i=1;i<prices.size();i++){
            dp[i][0]=max(dp[i-1][0],dp[i-1][1]-prices[i]-fee);
            dp[i][1]=max(dp[i-1][1],dp[i-1][0]+prices[i]);
        }
        return dp[prices.size()-1][1];
    }
};

总结:

今天我们完成了最佳买卖股票时机含冷冻期、买卖股票的最佳时机含手续费两道题,相关的思想需要多复习回顾。接下来,我们继续进行算法练习。希望我的文章和讲解能对大家的学习提供一些帮助。

当然,本文仍有许多不足之处,欢迎各位小伙伴们随时私信交流、批评指正!我们下期见~

在这里插入图片描述

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

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

相关文章

银行转账截图p图制作,电子回执单,建设的,用易语言开发的,分享源码

闲着很无聊&#xff0c;刚好网上找到了一个默认&#xff0c;当然这个模版图我加了水印&#xff0c;只能是娱乐用&#xff0c;做不了啥坏事哈&#xff0c;然后软件是用易语言开发的&#xff0c;一个画板一些标签编辑框快照生成功能实现了这个软件&#xff0c;下面看下我的界面。…

软件安全测试怎么做?如何确保软件授权安全

在数字化不断演进的今天&#xff0c;软件安全测试变得至关重要。它验证了软件是否容易受到网络攻击&#xff0c;并检验恶意或意外输入对操作的影响。安全测试的目标是保障系统和信息的安全性和可靠性&#xff0c;确保它们不接受未授权的输入。 一、安全测试准备 开发者必须认识…

报名开启丨2023 SpeechHome 语音技术研讨会

2023 SpeechHome 语音技术研讨会将于11月18日—11月19日&#xff0c;在北京举办&#xff0c;同时举行开源语音技术交流会和第八届Kaldi技术交流会。 欢迎大家报名参加&#xff08;报名链接在文末&#xff09;&#xff01; 本届研讨会覆盖5大主题&#xff0c;包括语音前沿技术…

Hadoop 视频分析系统

视频分析系统 业务流程 原始数据 vedio.json {"rank":1,"title":"《逃出大英博物馆》第二集","dzl":"77.8","bfl":"523.9","zfl":"39000","type":"影视",&quo…

c++ 模拟进制之间的转换

c 模拟进制之间的转换 废话少说&#xff0c;直接上图 效果图 代码 #include<iostream> using namespace std;// 10进制转n进制 n>2 8 16 string _10to_n(int num,int n2){string res "";int yushu;char c;while( num!0 ){yushu num%n;switch (yushu) …

RPA处理重复工作,助力高效资金管理

在瞬息万变的市场竞争中&#xff0c;众多企业开展多元化经营以获取最大的经济效益。然而&#xff0c;企业的多元化经营程度越高&#xff0c;协调活动可能造成的决策延误也越多&#xff0c;其资金管理往往将面临更大的考验。随着新技术的发展&#xff0c;更多具备多元产业的企业…

华为云分布式数据库GaussDB,做金融数字化的坚实数据底座

本篇为大家分享下GaussDB的商业进展以及产品能力升级方面的最新情况。 1. 华为云GaussDB正在从金融覆盖到更多行业 从2019年开始&#xff0c;在华为内部通过持续的锤炼&#xff0c;推出了融合多项技术的自主创新的GaussDB数据库&#xff0c;而且陆续完成了华为公司内部核心系统…

Grafana安装配置

配置文件路径 /etc/grafana/grafana.ini 一、Grafana 安装 https://grafana.com/grafana/download?editionoss&pgget&plcmtselfmanaged-box1-cta1 以centos为例 #安装 sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.2.0-1.x86_64.rpm#修改端…

RT-Thread提供的网络世界入口 -net组件

作为一款在RTOS领域对网络支持很丰富的RT-Thread&#xff0c;对设备联网功能的支持的工具就是net组件。 位于/rt-thread/components/net路劲下&#xff0c;作为一款基础组件&#xff0c;env与Studio的工程配置项界面的配置项都依赖该目录下的Kconfig。 我们对网络功能的选择&am…

STM32 GPIO

STM32 GPIO GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口&#xff0c;也就是我们俗称的IO口 根据使用场景&#xff0c;可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 数据0就是低电平&#xff0c…

【开源三方库】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的组件框架

万冬阳 公司&#xff1a;中国科学院软件所 小组&#xff1a;知识体系工作组 简介 Easyui是一套基于ArkTS语言开发的轻量、可靠的移动端组件库&#xff0c;它是对OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09; ArkUI进行深度定制的组件框架。Easyui可扩…

等保测评怎么做?有哪些流程?

现在很多信息系统想要上线都需要做等保测评&#xff0c;如果不能通过等保测评&#xff0c;不仅系统不允许上线&#xff0c;同时一旦出现了网络安全事件&#xff0c;相关企业还需要承担重要的责任。目前如果是为政府、事业单位、国企等开发系统&#xff0c;等保测评报告也是重要…

怎么在web显示模型的动态应力图?

要在网页上显示模型的动态应力图&#xff0c;需要执行几个步骤。动态应力图通常涉及有限元分析 (FEA) 模拟中的应力和应变数据的可视化&#xff0c;可以使用 Python、JavaScript 等工具以及 Three.js、Plotly 或 D3.js 等库来渲染图一个网页。以下是该过程的概述&#xff1a; …

互联网是如何运作的?以前端角度出发(b站objtube的卢克儿听课笔记)

1、你是如何用你的计算机设备发送数据和接受数据的呢&#xff1f; 例如我们是如何访问到哔哩哔哩的数据的 当你的设备开始连接到互联网时&#xff0c;会被分配一个IP地址。 而哔哩哔哩的服务器也接入到互联网&#xff0c;它也将被分配一个IP地址。 我们常说你访问某个网站&a…

数据库|Binlog故障处理之drainer周期性罢工

目录 一、背景 二、故障现象 三、分析过程 四、解决方案 五、思考 六、总结 一、背景 最近&#xff0c;用户反馈我们的生产环境TiDB集群的drainer频繁发生故障。故障表现为服务崩溃无法启动&#xff0c;或者数据在运行过程中丢失&#xff0c;给我们的业务带来了很大的困扰…

uniapp刻度尺的实现(swiper)滑动打分器

实现图&#xff08;百分制&#xff09;&#xff1a;滑动swiper进行打分&#xff0c;分数加减 <view class"scoring"><view class"toggle"><view class"score"><text>{{0}}</text><view class"scoreId&quo…

GitHub金矿:一套智能制造MES的源代码,可以直接拿来搞钱的好项目

目前国内智能制造如火如荼&#xff0c;工厂信息化是大趋势。如果找到一个工厂&#xff0c;搞定一个老板&#xff0c;搞软件的小虾米就能吃几年。 中国制造业发达&#xff0c;工厂林立&#xff0c;但是普遍效率不高&#xff0c;需要信息化提高效率。但是矛盾的地方在于&#xf…

开源:特殊的垄断

免责声明&#xff1a;本博客旨在分享我对开源策略的理解和体会&#xff0c;不代表任何组织或机构的立场或观点&#xff0c;也不构成任何商业或投资的建议或担保。本博客的内容可能存在错误或遗漏&#xff0c;也可能随着时间的推移而变得过时或不适用。请在使用或依赖本博客的内…

4、FFmpeg命令行操作2

三、ffprobe命令 ffprobe命令- ffprobe用来查看多媒体文件的信息 常用命令如下所示: ffprobe -show_packets input.mp4 //获取文件信息并显示文件中每个帧的包信息(包含audio和video包),如下图所示: codec_type : 帧类型&#xff0c;如视频包、音频包等 stream_index : 多媒体的…

2023 ChinaJoy后,Flat Ads成为游戏、社交出海的新选择

今年ChinaJoy 展会&#xff0c;共吸引了来自世界各地的 500 多家企业参展&#xff0c;预计吸引超过33万人次参观。ChinaJoy年年有&#xff0c;那今年对于行业来说有什么新变化呢&#xff1f; 01 出海热潮不减&#xff0c;新增客户明显提升 据不完全统计&#xff0c;展会期间前…