(51/60)买卖股票的最佳时机含冷冻期、买卖股票的最佳时机含手续费
day51
买卖股票的最佳时期含冷冻期
leetcode:309. 买卖股票的最佳时机含冷冻期
动态规划
代码实现
/* 意义:下标为i时各种情况的收益 dp[i][0] 持有 dp[i][1] 当天卖出 dp[i][2] 之前不持有 递推: dp[i][0] = max(dp[i-1][0],dp[i-1][2] - prices[i]); // 之前持有、之前不持有且当天持有 dp[i][1] = dp[i-1][0] + prices[i]; // 当天卖出(持有->当天卖出) dp[i][2] = max(dp[i-1][2],dp[i-1][1]); // 之前不持有、前一天当天卖出 初始化: dp[0][0] = -prices[0]; dp[0][1] = 0; // 没意义占位 dp[0][2] = 0; */ class Solution { public: int maxProfit(vector<int>& prices) { vector<vector<int>> dp(prices.size(),vector<int>(3,0)); dp[0][0] = -prices[0]; for(int i = 1;i < prices.size();i++){ dp[i][0] = max(dp[i-1][0],dp[i-1][2] - prices[i]); // 之前持有、之前不持有且当天持有 dp[i][1] = dp[i-1][0] + prices[i]; // 当天卖出 dp[i][2] = max(dp[i-1][2],dp[i-1][1]); // 之前不持有、前一天当天卖出 } return max(dp[prices.size()-1][1],dp[prices.size()-1][2]); } };
买卖股票的最佳时机含手续费
leetcode:714. 买卖股票的最佳时机含手续费
动态规划
代码实现
/* 意义:下标为i的各类型最大收益为 dp[i][0]不持有 dp[i][1]持有 递推: 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]); // 前一天持有、前一天不持有当天持有 初始化: dp[0][0] = 0; dp[0][1] = -prices[0]; */ class Solution { public: int maxProfit(vector<int>& prices, int fee) { vector<vector<int>> dp(prices.size(),vector<int>(2,0)); int count = 0; dp[0][1] = -prices[0]; for(int i = 1;i < prices.size();i++){ 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]); // 前一天持有、前一天不持有当天持有 } return dp[prices.size()-1][0]; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏