算法训练营day53

题目1:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode)

复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>> dp(prices.size(), vector<int>(3));
        // 三个状态
        // dp[i][0] 持有股票  dp[i][1] 冷冻期  dp[i][2] 不持有股票
        // 递推公式
        // 持有股票 = max(前一次就持有,冷冻期-今天股票价格)
        // 冷冻期 = max(前一次冷冻期,持有股票)
        // 不持有股票 = max(前一次就不持有,持有股票+今天股票价格)
        dp[0][0] = - prices[0];
        for(int i = 1;i < prices.size();i++) {
            dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
            dp[i][1] = max(dp[i - 1][1], dp[i - 1][2]);
            dp[i][2] = max(dp[i - 1][2], dp[i - 1][0] + prices[i]);
        }
        return dp[prices.size() - 1][2];
    }
};

题目2:714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)

这道题就是在 买卖股票Ⅱ上多了一个手续费而已

复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices, int fee) {
        vector<vector<int>> dp(prices.size(), vector<int>(2));
        dp[0][0] = -prices[0];
        for(int i = 1;i < prices.size();i++) {
            dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
            dp[i][1] = max(dp[i - 1][1], dp[i - 0][0] + prices[i] - fee);
        }
        return dp[prices.size() - 1][1];
    }
};
相关推荐
Jasmine_llq21 分钟前
《P3825 [NOI2017] 游戏》
算法·游戏·枚举法·2-sat 算法·tarjan 算法·邻接表存储
Miraitowa_cheems24 分钟前
LeetCode算法日记 - Day 38: 二叉树的锯齿形层序遍历、二叉树最大宽度
java·linux·运维·算法·leetcode·链表·职场和发展
wangzy198225 分钟前
图形基础算法:如何将点与带曲线边的多边形位置关系算法做稳定
算法
艾醒44 分钟前
探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
人工智能·深度学习·算法
艾醒1 小时前
探索大语言模型(LLM):Open-WebUI的安装
人工智能·算法·全栈
猫天意2 小时前
【CVPR2023】奔跑而非行走:追求更高FLOPS以实现更快神经网络
人工智能·深度学习·神经网络·算法·机器学习·卷积神经网络
宁檬精2 小时前
算法练习——55.跳跃游戏
数据结构·算法·游戏
王璐WL2 小时前
【C语言入门级教学】内存函数
c语言·开发语言·算法
啃啃大瓜2 小时前
python常量变量运算符
开发语言·python·算法
熊文豪2 小时前
【华为OD】找出通过车辆最多颜色
算法·华为od