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

这篇具有很好参考价值的文章主要介绍了leetcode 188. 买卖股票的最佳时机 IV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023.8.21

leetcode 188. 买卖股票的最佳时机 IV,leetcode专栏,leetcode,算法,职场和发展,cpp,数据结构

        这道题是 买卖股票的最佳时机III  的升级版,即买卖次数限制为k次,做法和上一篇如法炮制,直接看代码:文章来源地址https://www.toymoban.com/news/detail-662951.html

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        vector<vector<int>> dp(prices.size(),vector<int>(k*2));
        //初始化,偶数为持股,奇数为不持股
        for(int i=0; i<k*2; i++)
        {
            if(i % 2 == 0) dp[0][i] = -prices[0];
            else dp[0][i] = 0;
        }
        // 遍历
        for(int i=1; i<prices.size(); i++)
        {
            dp[i][0] = max(dp[i-1][0] , -prices[i]);
            for(int j=1; j<k*2; j++)
            {
                if(j % 2 == 0) dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1]-prices[i]); // 偶数为持股状态
                else dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1]+prices[i]);
            }
        }
        return dp[prices.size()-1][k*2-1];
    }
};

到了这里,关于leetcode 188. 买卖股票的最佳时机 IV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 算法练习Day50|● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

    LeetCode:123.买卖股票的最佳时机III 123. 买卖股票的最佳时机 III - 力扣(LeetCode) 1.思路 将两次买入卖出转化为是否持有的状态,当天可进行两次买卖,故每天买卖有四种状态,四种状态包含了当天不买不卖的状态。 2.代码实现 3.复杂度分析 时间复杂度:O(n). 空间复杂度:O(1

    2024年02月12日
    浏览(44)
  • java算法day50 | ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

    思路: 这道题的关键就是如何设置dp数组的状态。用五种状态表示对股票持有或售出的不同阶段。代码随想录讲解视频 时间复杂度:O(n) 空间复杂度:O(n × 5) 思路: 在上一题2次的基础上变为k次。可以发现规律:除了0以外,偶数就是卖出,奇数就是买入。 因此dp数组的维度

    2024年04月11日
    浏览(42)
  • 算法训练第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

    题目链接:123.买卖股票的最佳时机III 参考:https://programmercarl.com/0123.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAIII.html 视频讲解:https://www.bilibili.com/video/BV1WG411K7AR 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所

    2024年02月01日
    浏览(39)
  • 动态规划-状态机(188. 买卖股票的最佳时机 IV)

    状态分类: f[i,j,0]考虑前i只股票,进行了j笔交易,目前未持有股票 所能获得最大利润 f[i,j,1]考虑前i只股票,进行了j笔交易,目前持有股票 所能获得最大利润 状态转移: f[i][j][0] = Math.max(f[i-1][j][0],f[i-1][j][1]+prices[i]); f[i][j][1] = Math.max(f[i-1][j][1],f[i-1][j-1][0]-prices[i]);   还有一位

    2024年02月08日
    浏览(43)
  • 刷题第四十二天 123. 买卖股票的最佳时机Ⅲ 188. 买卖股票的最佳时机Ⅳ

    和前一题的限制在于只能买卖两次,所以dp数组多定义一个状态,分别表示第一次持有 第一次不持有和第二次持有 第二次不持有,然后进行更新。 注意初始化的时候 第一次持有和第二次持有都需要默认0-prices[0] 和前一题的差别就是可以多次买卖,所以定义一个三维数组,表

    2024年02月05日
    浏览(47)
  • 【学会动态规划】买卖股票的最佳时机 IV(18)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:188. 买卖股票的最佳时机 IV

    2024年02月13日
    浏览(43)
  • 《LeetCode》—— 买卖股票的最佳时机

    本期,我将给大家讲解的是有关动态规划类的题—— 买卖股票的最佳时机 。这个系列总共有四道题。接下来,让我们一起去看看!!! 目录 (一)买卖股票的最佳时机 (二)买卖股票的最佳时机 II (三)买卖股票的最佳时机 III (四)买卖股票的最佳时机 IV LeetCode题目链

    2024年02月05日
    浏览(47)
  • 【LeetCode】121.买卖股票的最佳时机

    给定一个数组  prices  ,它的第  i  个元素  prices[i]  表示一支给定股票第  i  天的价格。 你只能选择  某一天  买入这只股票,并选择在  未来的某一个不同的日子  卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如

    2024年02月15日
    浏览(40)
  • leetcode121. 买卖股票的最佳时机

    题目: 给定一个数组  prices  ,它的第  i  个元素  prices[i]  表示一支给定股票第  i  天的价格。 你只能选择  某一天  买入这只股票,并选择在  未来的某一个不同的日子  卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大

    2024年02月10日
    浏览(52)
  • leetcode 121. 买卖股票的最佳时机

             本题用dp算法做, dp[i]的含义:前 i+1天能获得的最大利润 。 然后每次循环时需要维护一个最小值 min_num :即 i+1天中股票的最低价 。剩下的步骤都很常规,代码如下:         dp[i][0]:第i天持有股票所拥有的最多现金。          dp[i][1]:第i天不持有股票所拥有的最

    2024年02月12日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包