买卖股票 允许多次买卖

class Solution {
public:
    int maxProfit(vector& prices) {
        int n = prices.size();
        //dp[i][0]表示某一天不持股到该天为止的最大收益
        //dp[i][1]表示某天持股,到该天为止的最大收益
        vector > dp(n, vector(2, 0)); 
        //第一天不持股,总收益为0
        dp[0][0] = 0; 
        //第一天持股,总收益为减去该天的股价
        dp[0][1] = -prices[0]; 

        //遍历后续每天,状态转移
        for(int i = 1; i < n; i++){ 
            dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
            dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]);
        }

        //最后一天不持股,到该天为止的最大收益
        return dp[n - 1][0]; 
    }
};
全部评论

相关推荐

看到这图有点绷不住
mountisome:我直接让他多发点,可以不进,但是优惠我是必拿的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务