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

目录

  • 一、题目描述
  • 二、算法原理
  • 三、代码实现

一、题目描述

【123. 买卖股票的最佳时机 III】_第1张图片

二、算法原理

【123. 买卖股票的最佳时机 III】_第2张图片

三、代码实现

class Solution {
public:
    const int Init=-0x3f3f3f3f;
    int maxProfit(vector<int>& prices) 
    {
        int n=prices.size();
        vector<vector<int>> f(n,vector<int>(3,Init));
        vector<vector<int>> g(n,vector<int>(3,Init));
        f[0][0]=-prices[0];
        g[0][0]=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]);
                g[i][j]=g[i-1][j];
                if(j-1>=0)  g[i][j]=max(g[i][j],f[i-1][j-1]+prices[i]);
            }
        }
        return max(max(g[n-1][0],g[n-1][1]),g[n-1][2]);
    }
};

你可能感兴趣的:(算法,c++)