每日两题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;
    }
};
相关推荐
QXH2000002 分钟前
数据结构—双向链表
c语言·数据结构·算法·链表
旺小仔.21 分钟前
【数据结构篇】~排序(1)之插入排序
c语言·数据结构·算法·链表·性能优化·排序算法
冲,干,闯25 分钟前
VScode相关问题与解决
c++·ide·vscode
绎岚科技1 小时前
深度学习自编码器 - 随机编码器和解码器篇
人工智能·深度学习·算法·机器学习
jingling5551 小时前
后端开发刷题 | 数字字符串转化成IP地址
java·开发语言·javascript·算法
云边有个稻草人1 小时前
【刷题】Day5--数字在升序数组中出现的次数
开发语言·笔记·算法
月夕花晨3741 小时前
C++学习笔记(26)
c++·笔记·学习
Flame_Cyclone1 小时前
FakerInput 键盘鼠标输入封装
c++·windows·win32·fakerinput
ymchuangke1 小时前
评价类——熵权法(Entropy Weight Method, EWM),完全客观评价
人工智能·python·算法·机器学习·数学建模
嵌入式杂谈1 小时前
人工智能在C/C++中的应用:图像处理与机器学习
c语言·c++·人工智能