[leetcode]做题记录 123买卖股票的最佳时机

动态规划,分5中情况的下标

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int len=prices.size();
        vector<int>dp(5,0);//5个状态 0表示不操作 1表示第一次持股 2 表示第一次不持股 3表示第二次持股 4表示第二次不持股
        dp[1]=-prices[0];//第一次持股,减去成本
        dp[3]=-prices[0];//初始化
        for(int i=1;i<len;i++)
        {
            dp[1]=max(dp[1],dp[0]-prices[i]);//第一次持股,要么等于本身要么等于前一天利润-当天入股
            dp[2]=max(dp[2],dp[1]+prices[i]);
            dp[3]=max(dp[3],dp[2]-prices[i]);
            dp[4]=max(dp[4],dp[3]+prices[i]);
        }
        return dp[4];//最后输出不持股
    }
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值