類似Best Time to Buy and Sell Stock I,給出每個股票每一天的價格prices[i],但每次賣出之后緊鄰的一天為cooldown day,不能買入,思路依舊DP
dp[i][0]表示第i天手中未持有股票的情況下最高收益
dp[i][1]表示第i天手中持有股票的情況下的最高收益,初始化該為為不可能到達的極小負數(shù)值
狀態(tài)轉移方程:
if i >= 2:
dp[i][1] = max(dp[i - 2][0] - prices[i - 1], dp[i - 1][1])
else:
dp[i][1] = max(dp[i - 1][0] - prices[i - 1], dp[i - 1][1])
dp[i][
0] =
max(dp[i -
1][
0], dp[i -
1][
1] + prices[i -
1])
1 #309
2 #Runtime: 57 ms (Beats 38.83%)
3 #Memory: 14.1 MB (Beats 43.96%)
4
5 class Solution(object):
6 def maxProfit(self, prices):
7 """
8 :type prices: List[int]
9 :rtype: int
10 """
11 dp = [[0, -5000001] for _ in range(len(prices) + 1)]
12 for i in range(1, len(prices) + 1):
13 if i >= 2:
14 dp[i][1] = max(dp[i - 2][0] - prices[i - 1], dp[i - 1][1])
15 else:
16 dp[i][1] = max(dp[i - 1][0] - prices[i - 1], dp[i - 1][1])
17 dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + prices[i - 1])
18 return dp[-1][0]