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