其他分享
首页 > 其他分享> > leetcode-123. 买卖股票的最佳时机 III

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

作者:互联网

一、题目

在这里插入图片描述

二、思路

三、代码

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.empty())
        {
            return 0;
        }
        int size=prices.size();
        if(size==1)
        {
            return 0;
        }
        //表示的拥有的现金
        vector<vector<int>>dp(size,vector<int>(5,0));
        //定义5个状态
        //0:无操作
        //1:第一次买入
        //2:第一次卖出
        //3:第二次买入
        //4:第二次卖出
        dp[0][1]=-prices[0];
        dp[0][3]=-prices[0];
        for(int i=1;i<size;++i)
        {
            dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i]);
            dp[i][2]=max(dp[i-1][1]+prices[i],dp[i-1][2]);
            dp[i][3]=max(dp[i-1][3],dp[i-1][2]-prices[i]);
            dp[i][4]=max(dp[i-1][4],dp[i-1][3]+prices[i]);
        }
        return dp[size-1][4];
    }
};

标签:max,123,买入,prices,操作,卖出,III,leetcode,dp
来源: https://blog.csdn.net/weixin_45794299/article/details/120168704