非科班菜鸡算法学习记录 | 代码随想录算法训练营第50天|| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

news2024/9/21 0:44:30

123. 买卖股票的最佳时机III 
123. Best Time to Buy and Sell Stock III(英文力扣连接)
知识点:动规
状态:看思路ok
思路:

跟之前股票思路一样,多定义几个状态,此题要买两次,所以算上不操作一共有五个状态;

重要是在第一天如何初始化:

        dp[i][0]不操作,1持有一次,2卖一次不持有,3持有2次,4卖二次不持有;
        dp[0][0] = 0; //不操作为0
        dp[0][1] = -prices[0];//买一次就相当于减去当天的钱
        dp[0][2] = 0;// 买两次就是当天买当天卖
        dp[0][3] =-prices[0] ;// 买两次就是当天买当天卖后,又买了一次
        dp[0][4] = 0 ;// 买卖各两次

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>> dp(prices.size(), vector<int>(5, 0 )) ;
        // dp[i][0]不操作,1持有一次,2卖一次不持有,3持有2次,4卖二次不持有;
        dp[0][0] = 0; //不操作为0
        dp[0][1] = -prices[0];//买一次就相当于减去当天的钱
        dp[0][2] = 0;// 买两次就是当天买当天卖
        dp[0][3] =-prices[0] ;// 买两次就是当天买当天卖后,又买了一次
        dp[0][4] = 0 ;// 买卖各两次
        
        for(int i = 1; i < prices.size(); i++) {
            dp[i][0] = dp[i-1][0];
            dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i]);
            dp[i][2] = max(dp[i-1][2],dp[i-1][1] + prices[i]);
            dp[i][3] = max(   dp[i-1][3], dp[i-1][2] - prices[i]   );
            dp[i][4] = max(   dp[i-1][4], dp[i-1][3] + prices[i]   );
        }
        return dp[prices.size()-1][4];
    }
};

188.买卖股票的最佳时机IV 
188. Best Time to Buy and Sell Stock IV(英文力扣连接)
知识点:动规
状态:看思路ok
思路:

因为k次买卖,所以一共2K+1个(算上不操作的0),第i天都有一个for循环更新所有dp;

可以看成一共只有dp[i][j+1] (买入)和dp[i][j+2](卖出)两种状态

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        int n = 1+2*k;
    vector<vector<int>> dp(prices.size(), vector<int>(n, 0 )) ;
        // dp[i][0]不操作,1持有一次,2卖一次不持有,3持有2次,4卖二次不持有;
        for(int i = 1; i < 2*k; i= i+2) {
            dp[0][i] = - prices[0];
        }
        
        for(int i = 1; i < prices.size(); i++) {
            for(int j = 0;  j < 2*k ; j +=2) {
                dp[i][j+1] =  max(   dp[i-1][j+1], dp[i-1][j] - prices[i]   );//买入并持有
                dp[i][j+2] =  max(   dp[i-1][j+2], dp[i-1][j+1] + prices[i]   );//卖出并不持有
            }

            // dp[i][0] = dp[i-1][0];
            // dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i]);
            // dp[i][2] = max(dp[i-1][2],dp[i-1][1] + prices[i]);
            // dp[i][3] = max(   dp[i-1][3], dp[i-1][2] - prices[i]   );
            // dp[i][4] = max(   dp[i-1][4], dp[i-1][3] + prices[i]   );
        }
        return dp[prices.size()-1][n-1];
    }
};

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

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

相关文章

软件测试案例 | 气象探测库存管理系统的集成测试计划

将经过单元测试的模块按照设计要求连接起来&#xff0c;组成规定的软件系统的过程被称为“集成”。集成测试也被称为组装测试、联合测试、子系统测试或部件测试等&#xff0c;其主要用于检查各个软件单元之间的接口是否正确。集成测试同时也是单元测试的逻辑扩展&#xff0c;即…

聊聊手机导航软件

目录 1.人在外地没有导航的后果 2.传统导航方式 3.手机软件导航的原理 4.手机导航的优点 1.人在外地没有导航的后果 在外地没有导航的情况下&#xff0c;可能会带来以下一些后果&#xff1a; 1. 容易迷路&#xff1a;没有导航指引的情况下&#xff0c;你可能会走错路线&…

常见前端面试之VUE面试题汇总十三

39. Vue 中 key 的作用 vue 中 key 值的作用可以分为两种情况来考虑&#xff1a; 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元 素&#xff0c;通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来 实现元素切换的时候&#xff0c;如果切换前后含有相…

普里戈任或持有近10万个比特币

来源&#xff1a;Beincrypto 作者&#xff1a;David Thomas 编译&#xff1a;Shelby 摘要&#xff1a; 一个持有26 亿美元的比特币钱包已被确定可能与俄罗斯军事承包商有联系。 虽是猜测&#xff0c;但据报道「叶夫根尼普里戈任」的不正规商业行为可能受益于比特币的匿名性功能…

中国应试教育市场:挑战与机遇并存,金榜状元引领前行

2023年全国高考报名人数1291万人再次刷新历史纪录&#xff0c;但一本的录取率仅为23%&#xff1b;教育部2021年开始推行中考分流政策&#xff0c;只有约为50%初中毕业生可以升入普通高中&#xff1b;“双减”政策的推行&#xff0c;使得高考升学的压力提前到中考阶段&#xff0…

ATFX汇市:美元指数已连续六周收阳,需警惕超买风险

ATFX汇市&#xff1a;7月14日当周&#xff0c;因为6月份爆冷的非农就业报告&#xff0c;美元指数大跌2.26%。奇怪的是&#xff0c;在此之后&#xff0c;美元指数进入超强牛市状态。截至上周&#xff0c;已经连续6周收出阳K线&#xff0c;累计涨幅达4.24%&#xff0c;最高触及10…

CI/CD 持续集成 持续交付

CI&#xff08;Continuous integration&#xff09;持续集成 参考&#xff1a;https://www.jianshu.com/p/2132949ff84a 持续集成是指多名开发者在开发不同功能代码的过程当中&#xff0c;可以频繁的将代码行合并到一起并切相互不影响工作。 持续集成的目的&#xff0c;是让…

多店铺智能客服,助力店铺销量倍增

近年来电商发展得非常快速&#xff0c;市场竞争也是愈发激烈了。商家不仅需要提高产品和服务的质量&#xff0c;还要争取为自己获取更多的曝光&#xff0c;以此来分散运营的风险和降低经营的成本&#xff0c;所以越来越多的商家也开始转向多平台多店铺运营。但即使运营多个平台…

Shiro整合SpringBoot,实战下的应用场景

文章目录 前言一、springBootshiro环境准备1.数据库2.ssmp环境搭建3.实体类4.三层搭建5.初始化测试数据 二、Shiro过滤器1.Shiro认证过滤器2.Shiro授权过滤器 三、springBootshiro身份认证1.创建Realm,重写认证方法doGetAuthenticationInfo2.创建shiro配置类3.Postman测试 四、…

并发(读写锁,线程池)03 详细讲解

读写锁 独占锁&#xff1a;一次只能被一个线程占有 共享锁。多个线程可以同时占有 class Apple{public static void main(String[] args) {Mycache mycachenew Mycache();for (int i 0; i <5 ; i) {final int tempi;new Thread(()->{mycache.put(temp"",tem…

北京985学校,交叉学科考英一数三408

北京师范大学(B) 考研难度&#xff08;☆☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1096字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 北…

ChatGPT⼊门到精通(5):ChatGPT 和Claude区别

⼀、Claude介绍 Claude是Anthropic开发的⼀款⼈⼯智能助⼿。 官⽅⽹站&#xff1a; ⼆、Claude能做什么 它可以通过⾃然语⾔与您进⾏交互,理解您的问题并作出回复。Claude的主要功能包括: 1、问答功能 Claude可以解答⼴泛的常识问题与知识问题。⽆论是历史上的某个事件,理科…

飞天使-python的字符串转义字符元组字典等

文章目录 基础语法数据类型python的字符串运算符输入和输出 数据结构列表与元组字典与集合 参考文档 基础语法 数据类型 数值型 &#xff0c;整数 浮点型 布尔型&#xff0c; 真假&#xff0c; 假范围 字符型 类型转换python的字符串 了解转义字符一些基本的运算 \ 比如一行…

聊聊大规模敏捷框架和测试启发

这是鼎叔的第七十三篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。 之前的敏捷实践介绍文章&#xff0c;都是以单个团队&#xff08;独立交付特性的敏捷团队…

R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享...

全文链接&#xff1a;https://tecdat.cn/?p33514 综合社会调查&#xff08;GSS&#xff09;是由国家舆论研究中心开展的一项观察性研究。自 1972 年以来&#xff0c;GSS 一直通过收集当代社会的数据来监测社会学和态度趋势。其目的是解释态度、行为和属性的趋势和常量。从 197…

口碑最好的洗地机排名 洗地机哪个牌子性价比高

口碑最好的洗地机排名 洗地机哪个牌子性价比高 洗地机&#xff0c;作为现代家庭和商业环境中必备的清洁设备&#xff0c;既方便又高效。不过&#xff0c;面对市场上众多的洗地机品牌&#xff0c;我们该如何选择呢&#xff1f;毫无疑问&#xff0c;我们都希望能够找到一款口碑最…

vue中使用window.open打开assets文件夹下的pdf文件

需求&#xff1a;系统有个操作手册&#xff0c;点击会在浏览器新开个窗口并打开pdf文件。这个pdf文件存储在本地assets文件夹中。 文件结构&#xff1a; 注&#xff1a;直接使用window.open(文件路径)不能打开&#xff0c;需要在vue.config.js中配置所需文件 引入图中红框中的…

AMD 锐龙 8000系 APU 将补完其产品线,推出 12C24T16CU 和 16C32T40CU

我们大家都知道一直以来&#xff0c;AMD 的 APU 只到 R7&#xff0c;也就是 R7-x700G 和 r7-x800H。虽然也有 R9-x900HX&#xff0c;但它毕竟是 x800H 硬超上去的&#xff0c;核心数完全一样&#xff0c;并不能叫做真正的 R9。 究其原因&#xff0c;AMD 的 APU 是移动端优先的…

如何将Word中的中文数字转化为阿拉伯数字

例如这种情况&#xff1a; 需要把这些汉字数字改为阿拉伯数字。 步骤1&#xff1a;在任意位置输入“第章”&#xff0c;然后把光标放到“第”和“章”的中间&#xff0c;然后ctrlf9插入域&#xff0c;在域里面输入 autonum&#xff0c;然后按altf9 显示域值。 按下altF9后 第 …

优化案例5:视图目标列改写优化

优化案例5&#xff1a;视图目标列改写优化 1. 问题描述2. 分析过程2.1 目标SQL2.2 解决思路1&#xff09;效率低的执行计划2&#xff09;视图过滤性3&#xff09;查看已有索引定义 2.3 视图改写2.4 增添复合索引 3. 优化总结 DM技术交流QQ群&#xff1a;940124259 1. 问题描述…