【第51天| 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 】

这篇具有很好参考价值的文章主要介绍了【第51天| 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

三个状态:
1. 当前持有股票状态1
2. 当前不持有股票,且不是今天卖出的股票状态2
3. 当前不持有股票, 且股票是今天卖出的状态3

  • 题目要求前一天卖出了股票今天就不能买。所以今天持有股票状态1一定是昨天的状态2在今天买了股票,或者就是保持了昨天的状态1
    状态1 = max(状态1, 状态2-今天的股票价格);
  • 今天不持有股票且不是今天卖出的股票,即状态2。它一定是昨天不持有股票的状态,即状态2状态3.
    状态2 = max(状态2, 状态3);
  • 今天不持有股票且是今天卖出的股票,即状态3. 它一定是今天持有股票且今天卖出。
    状态3 = 状态1 + 今天的股票价格。
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<int> dp(3, 0);
        dp[0] = -prices[0];
        
        for(int i=1; i<prices.size(); i++)
        {
            dp[0] = max(dp[0], dp[1]-prices[i]);
            dp[1] = max(dp[1], dp[2]);
            dp[2] = dp[0]+prices[i];
        }
        
        return max(dp[1],dp[2]);
    }
};

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

** 二个状态**文章来源地址https://www.toymoban.com/news/detail-476415.html

  1. 当前持有股票dp[0]
  2. 当前不持有股票dp[1]
  • 状态1: 当前持有股票可能是保持了昨天持有股票的状态,或者是昨天不持有股票今天买了股票。
    dp[0] = max(dp[0], dp[1]-prices[i]);
  • 状态2: 当前不持有股票可能是保持了昨天不持有股票的状态,或者是今天持有股票然后我今天卖出去了股票。注意,卖股票要交手续费。
    dp[1] = max(dp[1], dp[0] + prices[i]-fee);
class Solution {
public:
    int maxProfit(vector<int>& prices, int fee) {
        vector<int> dp(2, 0);
        dp[0] = -prices[0];
        for(int i=1; i<prices.size(); i++)
        {
            dp[0]= max(dp[0], dp[1]-prices[i]);
            dp[1] = max(dp[1], dp[0]+prices[i]-fee);
        }
        return dp[1];
    }
};

到了这里,关于【第51天| 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【学会动态规划】买卖股票的最佳时机含手续费(16)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 这道题也不难理解,主要有两个点需要注

    2024年02月14日
    浏览(30)
  • 力扣 -- 309. 最佳买卖股票时机含冷冻期

     题目链接:309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode) 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。   参考代码:  以上就是用动态规划的思想分析这道题目的整个过程啦,你学会了吗?如果以上题解对你有

    2024年02月13日
    浏览(30)
  • 力扣 309. 买卖股票的最佳时机含冷冻期

    题目来源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/ C++题解:动态规划 状态1:表示持有股票。更新为之前持有股票(dp[i-1][0])或者不持有股票且不处于冷冻期后买入(dp[i-1][2]-prices[i])。 状态2:表示不持有股票且处于冷冻期,即卖出。更新为持有

    2024年02月22日
    浏览(26)
  • 【LeetCode】309. 买卖股票的最佳时机含冷冻期

    给定一个整数数组 prices ,其中第    prices[i]  表示第  i  天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 注意: 你不能同时参与

    2024年02月10日
    浏览(29)
  • dp算法 力扣309最佳买卖股票时机含冷冻期

    给定一个整数数组prices,其中第  prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 注意:你不能同时参与多笔交

    2024年02月14日
    浏览(29)
  • 309. 买卖股票的最佳时机含冷冻期(leetcode) 动态规划思想

    在本文章中,我们将要详细介绍一下Leetcode中买卖股票的最佳时机含冷冻期相关的内容,本题采用动态规划的思想解决 列出dp表,dp表中值的含义是什么    dp[i]表示第i天之后此时的最大利润 由于第i天不确定具体状态,多状态dp问题     🌟 .dp[i][0]:手中有股票没有卖出,我

    2024年02月03日
    浏览(34)
  • 【LeetCode股票买卖系列:309. 最佳买卖股票时机含冷冻期 | 暴力递归=>记忆化搜索=>动态规划】

    🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文

    2024年02月02日
    浏览(35)
  • 【算法】力扣【动态规划、状态机】309. 买卖股票的最佳时机含冷冻期

    309. 买卖股票的最佳时机含冷冻期 本文介绍解决力扣平台上第309号问题——“买卖股票的最佳时机含冷冻期”的算法。这是一个中等难度的问题,其核心是通过设计一个算法来计算在给定的股票价格数组 prices 下,能够获取的最大利润。股票价格数组 prices 中的每个元素 pric

    2024年01月18日
    浏览(39)
  • 【LeetCode动态规划#13】买卖股票含冷冻期(状态众多,比较繁琐)、含手续费

    力扣题目链接(opens new window) 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)

    2023年04月25日
    浏览(35)
  • 【LeetCode】买卖股票的最佳时机含冷冻期

    链接: 买卖股票的最佳时机含冷冻期 题目描述 算法分析 程序设计

    2024年02月13日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包