(leetcode刷题)
买卖股票的最佳时机Ⅱ
题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例: 输入: [7,1,5,3,6,4]
;输出: 7
(第2天买入,第3天卖出,第4天买入,第4天卖出,共计利润7)
方法
- 和上次的买卖股票的题一样,用动态规划的方法。这次的题不需要限制买卖次数,所以可以直接去掉代表次数的
kmax
。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
lens = len(prices)
if lens < 2:return 0
dp= [[0, 0] for i in range(lens)]
dp[0][0]=0
dp[0][1]=-prices[0]
for i in range(1, lens):
dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])
return dp[-1][0]