class Solution {
public int maxProfit(int[] prices) {
int[][] dp = new int[prices.length + 1][2];
// dp[i][0] 表示当天手上没有股票的盈利,可能是当天卖出,或者当天没有操作 dp[i][0] = Math.max(price[i] + dp[i - 1][1],dp[i - 1][0])
//dp[i][1]表示当前有股票,可能是昨天买的,也可能是今天买的,今天买那拿的余额就是前一天的 dp[i][1] = Math.max(dp[i - 1][1], dp[i - 2][0] - price[i]
//第一天
dp[1][1] = -prices[0];
for(int i = 2; i <= prices.length; i++){
dp[i][0] = Math.max(dp[i - 1][0],dp[i -1][1] + prices[i - 1]);
dp[i][1] = Math.max(dp[i - 1][1],dp[i -2][0] - prices[i - 1]);
}
return dp[prices.length][0];
}
}
leetcode 309 最佳买卖股票时机(含冷冻期)
最新推荐文章于 2024-10-01 05:04:32 发布