算法训练第五十天

这篇具有很好参考价值的文章主要介绍了算法训练第五十天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总结:今日是股票问题的变式,关键是要把握搞清楚dp数组的含义,自己也是被搞混了很久

188. 买卖股票的最佳时机 IV - 力扣(LeetCode)

代码:

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        if(prices.size() == 1)
        return 0;
        int n = prices.size();
        vector<vector<int>> dp(n + 1,vector<int>(2 * k,0));
        for(int i = 0;i < 2 * k;i = i + 2)
        {
            dp[1][i] = -prices[0];//持有
            dp[1][i + 1] = 0;//不持有
        }

        for(int i = 2;i <= n;i++)
        {
            for(int j = 0;j < 2 * k;j = j + 2)
            {
                if(j == 0)
                dp[i][j] = max(dp[i - 1][j],-prices[i - 1]);
                else
                dp[i][j] = max(dp[i - 1][j],dp[i - 1][j - 1]-prices[i - 1]);
                dp[i][j + 1] = max(dp[i - 1][j + 1],dp[i - 1][j] + prices[i - 1]);
            }
        }
        return dp[prices.size()][2 * k - 1];
    }
};

123. 买卖股票的最佳时机 III - 力扣(LeetCode)文章来源地址https://www.toymoban.com/news/detail-684955.html

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.size() == 1 || prices.size() == 0)
        return 0;
        int n = prices.size();
        vector<vector<int>> dp(prices.size() + 1,vector<int>(4,0));
        dp[1][0] = -prices[0];
        dp[1][1] = 0;
        dp[1][2] = -prices[0];
        dp[1][3] = 0;

        for(int i = 2;i <= prices.size();i++)
        {
            dp[i][0] = max(dp[i - 1][0],-prices[i - 1]);
            dp[i][1] = max(dp[i - 1][1],dp[i - 1][0] + prices[i - 1]);
            dp[i][2] = max(dp[i - 1][2],dp[i - 1][1] - prices[i - 1]);
            dp[i][3] = max(dp[i - 1][3],dp[i - 1][2] + prices[i - 1]);
        }
        return max(max(dp[n][0],dp[n][1]),max(dp[n][2],dp[n][3]));
    }
};

到了这里,关于算法训练第五十天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 代码随想录第五十天

    题目链接 : 买卖股票的最佳时机 III 自己的思路 :想不到!!!!高维dp数组!! 正确思路 :这里和之前的都不太一样,因为限制了买卖股票的次数,所以我们就加大dp数组的维度;动规五部曲:1、dp数组的含义:dp[i][0]表示一开始不操作的情况、dp[i][1]表示第一次持有(不一定

    2024年02月11日
    浏览(37)
  • 算法第三十天-矩阵中移动的最大次数

    网格图 DFS 从第一列的任一单元格 ( i , 0 ) (i,0) ( i , 0 ) 开始递归。枚举往右上/右/右下三个方向走,如果走一步后,没有出界,且格子值大于 g r i d [ i ] [ j ] grid[i][j] g r i d [ i ] [ j ] ,则可以走,继续递归。 在递归过程中,记录能访问到的最大列号,作为答案。 代码实现时,为

    2024年03月23日
    浏览(39)
  • 秒懂百科,C++如此简单丨第二十天:贪心算法2

    目录 Everyday English 前言 洛谷 P1031 均分纸牌 题目描述 思路点拨 AC代码 洛谷 P1094 纪念品分组 题目描述 样例输入 样例输出  思路点拨 AC代码 洛谷 P2660 zzc 种田  题目描述 思路点拨 AC Code 结尾 Don\\\'t miss the opportunity. 机不可失,时不再来。 这节课是贪心算法的习题课,我们会讲解

    2024年02月20日
    浏览(39)
  • 第五十四回 高太尉大兴三路兵 呼延灼摆布连环马-AI通过构建并训练CNN网络来进行飞机识别

    呼延灼举荐了百胜将韩滔和天目将彭玘做先锋。 两军对战,韩滔和秦明斗二十回合,呼延灼与林冲斗在一起,花荣与彭玘斗在一处,后彭玘与一丈青扈三娘斗在一起,被扈三娘抓住。 尽管梁山占优,宋江也没有乘胜追击,因为呼延灼带的是连环马,马带马甲,人披铁铠,射

    2024年03月23日
    浏览(42)
  • 第10天-代码随想录刷题训练-第五章 栈和队列- ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈

    栈和队列对应的三个不同的STL版本,底层实现方式不一样, 为我们所知道的是 SGI STL 栈 栈提供 pop和push等接口, 不提供走访功能 也不提供迭代器, 不像map和set可以使用迭代器遍历,往往不被归类为容器,而是容器适配器 栈的内部实现结构可以使用 verctor、list 和 deque(默认)

    2024年02月04日
    浏览(42)
  • 【算法】动态规划(第五章习题解答)

    5.1 图书馆大门前有 n n n 级台阶, 你每次跨上 1 1 1 级或者 2 2 2 级, 请问等上 n n n 级台阶总共有多少种不同的方法? 设计一个算法求解上述问题, 尝试写出公式, 说明算法设计思想和时间复杂度. 算法设计:核心思路是函数的递归调用,当处理 n n n 级台阶时,如果跨上1级则还需要

    2024年02月02日
    浏览(49)
  • 算法基础课第五讲 动态规划

    时间复杂度:状态数量 转移的计算量 * 总体概述:给一堆物品,有体积有价值。有一个背包,在背包能装下的前提下最终能装下多少(背包不一定要装满) DP问题:一般需要从两方面考虑:状态表示以及状态计算 状态表示:f(i,j) 从两个方面考虑:集合(所有选法的集合)(

    2024年02月01日
    浏览(50)
  • 第五章 数据结构与算法——八大排序

    目录 一、排序的概念及其运用 二、八大排序的原理及其实现(升序为例) (一)、直接插入排序 (二)、希尔排序(也叫缩小增量排序)(重要) 1.原理: 2.该排序一般分为两个步骤: 3.预排序过程: 4.预排序的意义(升序为例): 5.希尔排序的特点: 6.希尔排序代码实现

    2024年02月19日
    浏览(52)
  • 无人驾驶实战-第五课(动态环境感知与3D检测算法)

    在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 激光雷达的分类:     机械式Lidar:

    2024年02月14日
    浏览(41)
  • 60题学会动态规划系列:动态规划算法第五讲

    子数组系列题目 文章目录 1.最大子数组和 2.环形子数组的最大和 3.乘积最大数组 4.乘积为正数的最长子数组长度 5.等差数列划分 6.最长湍流子数组 7.单词拆分 8.环绕字符串中唯一的子字符串 力扣链接:力扣 给你一个整数数组  nums  ,请你找出一个具有最大和的连续子数组(

    2024年02月15日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包