youngyangyang04 / leetcode-master-comment

用来做评论区
0 stars 0 forks source link

[Vssue]0123.买卖股票的最佳时机III.md #152

Open youngyangyang04 opened 3 months ago

youngyangyang04 commented 3 months ago

https://www.programmercarl.com/0123.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAIII.html

Du1in9 commented 3 months ago
int[][] dp = new int[prices.length][5];
dp[0][1] = -prices[0];
dp[0][3] = -prices[0];

for (int i = 1; i < prices.length; i++) {
    dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]); // 1
    dp[i][2] = Math.max(dp[i - 1][2], dp[i - 1][1] + prices[i]); // 2
    dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]); // 3
    dp[i][4] = Math.max(dp[i - 1][4], dp[i - 1][3] + prices[i]); // 4
}
return dp[prices.length - 1][4];

1.昨天第一次持有,或昨天没有操作但今天买入 2.昨天第一次不持有,或昨天第一次持有但今天卖出 3.昨天第二次持有,或昨天第一次不持有但今天买入 4.昨天第二次不持有,或昨天第二次持有但今天卖出