每日两题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;
    }
};
相关推荐
小白菜又菜5 分钟前
Leetcode 3370. Smallest Number With All Set Bits
算法·leetcode·职场和发展
A-code5 分钟前
C/C++ 中 void* 深度解析:从概念到实战
c语言·开发语言·c++·经验分享·嵌入式
星谷罗殇1 小时前
(七)TRPO 算法 & PPO 算法
算法·机器学习
国服第二切图仔2 小时前
Rust开发之使用Trait对象实现多态
开发语言·算法·rust
电鱼智能的电小鱼3 小时前
基于电鱼 ARM 工控机的井下AI故障诊断方案——让煤矿远程监控更智能、更精准
网络·arm开发·人工智能·算法·边缘计算
玖笙&3 小时前
✨WPF编程进阶【6.1】:图形原则(附源码)
c++·c#·wpf·visual studio
s砚山s3 小时前
代码随想录刷题——二叉树篇(一)
c++·算法·leetcode
AC是你的谎言4 小时前
HTTP和HTTPS
linux·网络·c++·网络协议·学习·http·https
ZIM学编程5 小时前
「学长有话说」作为一个大三学长,我想对大一计算机专业学生说这些!
java·c语言·数据结构·c++·python·学习·php
代码AC不AC5 小时前
【C++】哈希表封装实现 unordered_map 和 unordered_set
c++·unordered_map·unordered_set·哈希表封装