代码随想录训练营day42|188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

news2024/11/25 3:44:57

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

变成了最多可以买卖k只股票

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        vector<vector<int>> dp(prices.size(),vector<int>(2*k+1,0));
        for(int i=1;i<2*k+1;i+=2){
            dp[0][i]=-prices[0];
        }
        //初始化,第k次买卖股票且持有股票的收益
        for(int i=1;i<prices.size();i++){
            //第i天第k笔持有的股票可以是第i-1天第k笔持有的股票得来的
            for(int j=1;j<2*k;j+=2){
                dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]-prices[i]);
                //第i天第j笔持有的股票的状态下最大利润,j表示还有股票
                dp[i][j+1]=max(dp[i-1][j+1],dp[i-1][j]+prices[i]);
                //第i天第j笔持有股票卖掉后(j+1是每股派的时候)
            }
        }
        int m=dp[prices.size()-1][2];
        for(int i=4;i<2*k+1;i+=2){
            m=max(m,dp[prices.size()-1][i]);
        }
        return m;
    }
};

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

题目

本题总共对应 4种状态:

1.持有股票.2持股交易当天3.冷冻期。4.卖出股票后,买下一只股票前
在之前的题中,234被放到了一起,但本题有冷冻期所以要分开

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(max(dp[i-1][0],dp[i-1][2]-prices[i]),dp[i-1][3]-prices[i]);
            // 第i天持股,可以前一天是持股的,也可以前一天冷冻期,也可以前一天是冷冻期后但还没买入。
            dp[i][1]=prices[i]+dp[i-1][0];//卖出股票当天,前一天必须持股
            dp[i][2]=dp[i-1][1];//冷冻期,和前一天卖出去的一样
            dp[i][3]=max(dp[i-1][3],dp[i-1][2]);//冷冻期结束后的一天或i-1天已经是结束冷冻期了
        }
        
        return max(max(dp[prices.size()-1][1],dp[prices.size()-1][2]),dp[prices.size()-1][3]);
    }
};

在这里插入图片描述

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

 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]);

只用考虑减去手续费即可。

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

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

相关文章

【ESP32】fopen 无法创建.html文件

Long filename support设置为Long filename buffer in heap 后fopen正常创建.html文件

springBoot 集成https

springBoot 集成https 1、springBoot默认的证书格式 pring Boot 需要 .p12 或 .jks 格式的证书。如果你只有 .pem 和 .key 文件&#xff0c;可以使用 openssl 工具将它们转换成 .p12 文件 2、转换.p12 我的证书文件如下&#xff0c;需要转换 2.1 下载openssl https://slpr…

C#EF框架

EF概念: 实体框架&#xff08;Entity Framework&#xff09;是一种对象关系映射器&#xff08;O/RM&#xff09;&#xff0c;它使.NET开发人员能够通过.NET对象来操作数据库。它消除了开发人员通常需要编写的大多数数据访问代码的需求。ORM框架有个优势&#xff1a;解放开发人…

游戏开发| Unreal5.2-5.4接入chatGPT定制游戏NPC

引擎版本UE5.2 (也支持到5.4,有试用其它插件所以选择之前版本) 使用插件(免费) 1.VArest (插件官方介绍:Plugin that makes REST communications much easier.)可以让REST(Representational State Transfer)通信变得更加容易,涉及客户端与服务器之间通过 HTTP 协议…

帧缓冲 framebuffer

一、基本概念 framebuffer: 帧缓存、帧缓存&#xff08;显示设备&#xff09; Linux内核为显示提供的一套应用程序接口。&#xff08;驱动内核支持&#xff09; 分辨率&#xff1a; 像素点 显示屏&#xff1a;800 * 600&#xff08;横向有800个像素点&#xff0c;纵向有60…

9.10总结

今天学习了树形dp 根据题目意思可以建出一颗树&#xff0c;先dfs递到叶节点&#xff0c;在归的时候有递推方程 dp[n][0]max(dp[s][1],dp[s][0]); dp[n][1]dp[s][0]; s为n的子节点&#xff0c;那么递推方程就写出来了&#xff0c;今天还做了几道dp&#xff0c;都是线性dp 总…

【电子通识】半导体工艺——刻蚀工艺

在文章【电子通识】半导体工艺——光刻工艺中我们讲到人们经常将 Photo Lithography&#xff08;光刻&#xff09;缩写成 Photo。光刻工艺是在晶圆上利用光线来照射带有电路图形的光罩&#xff0c;从而绘制电路。光刻工艺类似于洗印黑白照片&#xff0c;将在胶片上形成的图像印…

Vue组件:混入

1、基本用法 混入是一种为组件提供可复用功能的非常灵活的方式。混入对象可以包含任意的组件选项。当组件使用混入对象时&#xff0c;混入对象中的所有选项将被混入该组件本身的选项中。 语法格式如下&#xff1a; <script> //第一步&#xff1a;引用 mixin 对象 impo…

为什么说AI产业落地,下一代超级应用是“智能体”?

“未来超级应用方向就是AI Agent&#xff0c;ChatGPT很了不起、很强大&#xff0c;但与Agent不一样。AI Agent时代的到来&#xff0c;不会是一个神奇而强大的模型突然代替了所有的工作流&#xff0c;涉及到技术、工程与市场的不断磨合&#xff0c;最终以超预期的服务呈现给人类…

LED会议一体机开启超微小间距COB高清显示在会议系统中的新乐章

在当今数字化、信息化高速发展的时代&#xff0c;会议系统作为企业沟通、决策的重要平台&#xff0c;其显示技术的革新正以前所未有的速度推动着会议体验的飞跃。LED会议一体机&#xff0c;作为这一领域的佼佼者&#xff0c;特别是当其融合了超微小间距COB&#xff08;Chip On …

Transformer:自然语言处理领域的革命性神经网络架构

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; Transformer 是一种革命性的神经网络架构&#xff0c;最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出。它主要用于自然语言处理&#xff08;NLP&#xff09;任…

组合模式composite

学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/composite 将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。组合最主要的功能是在整个树状结构上递归调用方法并对结果进行汇总。 可以把各种形状组合到一个CompoundShape类中…

Kotlin入门实用开发技巧与注意事项

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Kotlin&#xff0c;这门由 JetBrains 开发的现代编程语言&#xff0c;自 2017 年被 Google 宣布为 Android 官方开发语言以来&#xff0c;便迅速…

第二个VUE项目(服务端带mysql数据库)

一、序言 第一个vue只有前端的羡慕部署成功后&#xff0c;立马想试试带数据库的了&#xff0c;于是在gitee上搜索了一下&#xff0c;带着试试的心里做了一次尝试&#xff0c;半天就部署完了&#xff0c;当真还是很兴奋。虽然没有改什么代码&#xff0c;但是熟悉了这整个环境&am…

用面向对象的方法进行数据分析

项目从两个不同类型的文件&#xff08;文本文件和 JSON 文件&#xff09;读取销售数据&#xff0c;将其封装为 Record 对象&#xff0c;合并数据后&#xff0c;统计每天的销售总额&#xff0c;并通过 pyecharts 库生成一个包含每日销售额的柱状图&#xff08;Bar chart&#xf…

day10-配置文件日志多线程

一、配置文件 1.1 properties配置文件 properties配置文件 特点:1、都只能是键值对2、键不能重复3、文件后缀一般是.properties结尾的 ​ Properties这是一个Map集合&#xff08;键值对集合&#xff09;&#xff0c;但是我们一般不会当集合使用主要用来代表属性文件&#xff0…

基于UDP的简易网络通信程序

目录 0.前言 1.前置知识 网络通信的大致流程 IP地址 端口号&#xff08;port&#xff09; 客户端如何得知服务器端的IP地址和端口号&#xff1f; 服务器端如何得知客户端的IP地址和端口号&#xff1f; 2.实现代码 代码模块的设计 服务器端代码 成员说明 成员实现 U…

今天讲点简单的:进制1

啊&#xff0c;哈喽&#xff0c;小伙伴们&#xff0c;大家好。我是#Y清墨&#xff0c;今天呐&#xff0c;我要介绍的是二进制。 导语 好久不见&#xff0c;今天来玩些简单的——二进制。 一.初步认识 十进制是逢十进一&#xff0c;那么&#xff0c;顾名思义&#xff0c;二进制…

完整的数仓能力,ByConity 1.0 版本发布!

文章来源&#xff5c;ByConity 开源社区 项目地址&#xff5c;https://github.com/ByConity/ByConity 2024年8月&#xff0c;ByConity 1.0 正式发布&#xff0c;翻开了 ByConity 新的一页。1.0 版本有哪些不同&#xff0c;以及 1.x 版本会重点迭代哪些能力&#xff0c;下面为大…

【NVMe SSD寄存器、数据结构】NVMe Controller 重要寄存器、SSD内部跟NVMe相关的重要数据结构解析

前言 NVMe Controller会将一些重要的信息&#xff08;NVMe控制器的能力&#xff0c;状态&#xff0c;Admin SQ, CQ地址等&#xff09;直接放在NVMe寄存器中&#xff0c;另一部分&#xff08;跟SSD比较相关的&#xff09;信息会放置在SSD内部&#xff0c;并最终通过Admin NVMe …