每日两题8

买卖股票的最佳时机 III

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        int INF = 0x3f3f3f3f;
        vector<vector<int>> f(n, vector<int>(3, -INF));
        auto g = f;
        g[0][0] = 0;
        f[0][0] = -prices[0];
        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]);
                // 细节 如果不这样处理就会出现dp表第一列填表错误
                g[i][j] = g[i - 1][j];
                if (j > 0)
                    g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]);
            }
        }
        int ret = 0;
        for (int j = 0; j < 3; j++)
            ret = max(ret, g[n - 1][j]);
        return ret;
    }
};

买卖股票的最佳时机 IV

cpp 复制代码
class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        int n = prices.size();
        int INF = 0x3f3f3f3f;
        k = min(n / 2, k);
        vector<vector<int>> f(n, vector<int>(k + 1, -INF));
        auto g = f;

        g[0][0] = 0;
        f[0][0] = -prices[0];

        for (int i = 1; i < n; i++) {
            for (int j = 0; j < k + 1; j++) {
                f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);
                g[i][j] = g[i - 1][j];
                if (j > 0)
                    g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]);
            }
        }
        int ret = 0;
        for (int j = 0; j < k + 1; j++)
            ret = max(ret, g[n - 1][j]);
        return ret;
    }
};
相关推荐
sheeta1998几秒前
LeetCode 每日一题笔记 日期:2026.05.31 题目:2126. 摧毁小行星
笔记·算法·leetcode
INGNIGHT11 分钟前
984.不含 AAA 或 BBB 的字符串(贪心)
开发语言·算法·leetcode
飞天狗11114 分钟前
2025第十六届蓝桥杯c/c++B组国赛题解
c语言·c++·算法·蓝桥杯
超梦dasgg19 分钟前
Tarjan算法解 强连通分量 & 循环依赖
算法·深度优先·图论
努力努力再努力wz25 分钟前
【Qt入门系列】:QLabel控件详解:从文本显示到图片展示,再到内容布局与伙伴机制
android·开发语言·数据结构·数据库·c++·qt·mysql
散峰而望41 分钟前
【算法练习】算法练习精选:从 Phone numbers 到 Decrease,覆盖字符串、模拟、图论思维题
数据结构·c++·算法·贪心算法·github·动态规划·图论
薇茗1 小时前
【C++】 基础语法篇
c++·c++基础语法
人道领域1 小时前
【LeetCode刷题日记】538.把二叉搜索树转换为累加树
java·开发语言·后端·算法·leetcode
并不喜欢吃鱼1 小时前
从零开始 C++----- 十二【C++ 数据结构】map/set 全解析:从使用到红黑树底层模拟实现
开发语言·数据结构·c++
不会C语言的男孩1 小时前
C++ Primer Plus 第17章:输入、输出和文件
开发语言·c++