侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 123. 买卖股票的最佳时机 III

Hope
2022-03-23 / 0 评论 / 0 点赞 / 332 阅读 / 455 字
温馨提示:
本文最后更新于 2022-03-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 123. 买卖股票的最佳时机 III

思路:

前后缀分解问题:枚举分界点,找到前面的满足性质的 + 后面的满足性质的。
这道题是找到最大的利润,所以就是枚举分界点,然后找到两段利润最大的和。

首先处理前段的最大利润数组,然后开始枚举分界点找到两段的最大利润。

代码:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        vector<int> p(n + 1);

        for(int i = 1,minp = INT_MAX; i <= n; i++){
            p[i] = max(p[i - 1],prices[i - 1] - minp);
            minp = min(minp,prices[i - 1]);
        }
        int res = 0;
        for(int i = n ,maxp = 0;i > 0; i--){
            res = max(res,p[i - 1] + maxp - prices[i - 1]);
            maxp = max(maxp,prices[i - 1]);
        }
        return res;
    }
};
0

评论区