其他分享
首页 > 其他分享> > LeetCode309. 最佳买卖股票时机含冷冻期

LeetCode309. 最佳买卖股票时机含冷冻期

作者:互联网

1. 题目描述

在这里插入图片描述

2. 题目分析

在这里插入图片描述

3. 代码实现

class Solution {
    public int maxProfit(int[] prices) {

        int len = prices.length;

        // 0 持有股票
        // 1 不持有股票,且在冷冻期
        // 2 不持有股票,且不在冷冻期

        int[][] dp = new int[len][3];
        dp[0][0] = -prices[0];

        for(int i = 1;i < len;i++){

            // 若第i天持有股票,只有两种情况(前一天买的,当天买的)
            dp[i][0] = Math.max(dp[i - 1][0],dp[i - 1][2] - prices[i]);

            // 若第i天不持有股票,且在冷冻期,只有一种情况(前一天卖出了)
            dp[i][1] = dp[i - 1][0] + prices[i];

            // 若第i天不持有股票,且不在冷冻期,说明前一天没有买也没有卖
            dp[i][2] = Math.max(dp[i - 1][1],dp[i - 1][2]);
        }

        int res = Math.max(dp[len - 1][1],dp[len - 1][2]);

        return res < 0?0:res;
    }
}

标签:int,Math,LeetCode309,最佳,len,prices,冷冻,dp
来源: https://blog.csdn.net/weixin_51194902/article/details/120461954