122.买卖股票的最佳时机II

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def maxProfit(self, prices: List[int]) -> int:
# 这题和 《121买卖股票I》 基本框架都是 一致的,都可用动态规划的解法;
# 区别在于 这次能买多次,也就是会说,持有股票的 状态变化中 如果是当天买入的该股票,也会涉及状态的传递,而不一定是第一次买股票的 0-prices[i];
d = [[0,0] for _ in range(len(prices))]
d[0][0] = -prices[0]
for i in range(1,len(prices)):
d[i][0] = max(d[i-1][0],d[i-1][1]-prices[i])
d[i][1] = max(d[i-1][1],d[i-1][0]+prices[i])
# print(d)
return max(d[len(prices)-1][1],d[len(prices)-1][0])