【动态规划】买卖股票的最佳时机Ⅲ

题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/

cpp 复制代码
class Solution {
public:
    const int INF = 0x3f3f3f3f;
    int maxProfit(vector<int>& prices) 
    {
        /*时空复杂度O(n)*/
        int n = prices.size();
        // 1. 创建dp表
        vector<vector<int>> f(n, vector<int>(3, -INF));
        auto g = f;
        // 2. 初始化
        f[0][0] = -prices[0], g[0][0] = 0;
        // 3. 填表
        for (int i = 1; i < n; ++i)
            for (int j = 0; j < 3; ++j)
            {
                f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);
                g[i][j] = g[i - 1][j];
                if (j >= 1) g[i][j] = max(g[i - 1][j], f[i - 1][j - 1] + prices[i]);
            }
        // 4. 返回值
        // return max(g[n - 1][0], max(g[n - 1][1], g[n - 1][2]));
        int ret = 0;
        for (int j = 0; j < 3; ++j)
            ret = max(ret, g[n - 1][j]);
        return ret;
    }
};
相关推荐
欣欣之王来了23 分钟前
AI合规专项:AI算法透明度的合规要求
人工智能·算法
wzdark23 分钟前
分块思想在算法优化中的实践与应用4
算法
Because_of_Her131 分钟前
dfs-洪水填充技巧
笔记·算法·深度优先·洪水填充
小静AI工程实验室44 分钟前
RSA 算法详解:从模幂原理到 OAEP 加密、PSS 签名与 Python 实验
python·算法
xzal121 小时前
GESP Python笔记
笔记·python·算法
wzdark1 小时前
算法中的记忆化思想与重复子问题优化4
算法
Discipline10291 小时前
流水线运行是否正随时间变得更加集中?
算法
lzhdim2 小时前
C#不为人知的10个魔法特性:资深开发者也会震惊的底层奥秘
java·前端·javascript·算法·c#
weixin_307779132 小时前
C++代码实现MATLAB中的pade函数功能
开发语言·c++·算法·matlab
smj2302_796826522 小时前
解决leetcode第4064题至多一次取反能被k整除的最长子数组II
python·算法·leetcode