151. 买卖股票的最佳时机 III
假设你有一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来找到最大的利润。你最多可以完成两笔交易。
Code
def maxProfit(self, prices):
# write your code here
if prices is None or len(prices)==0:
return 0
n=len(prices)
dp=[[0]*(5+1) for _ in range(n+1)]
dp[0][1]=0
dp[0][2]=dp[0][3]=dp[0][4]=dp[0][5]=float('-inf')
for i in range(1,n+1,1):
for j in range(1,5+1,2):#1,3,5
dp[i][j]=dp[i-1][j]#昨天没有持有今天还没有
if j>1 and i>1 and dp[i-1][j-1] != float('-inf'):#昨天持有但今天卖出
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]+prices[i-1]-prices[i-2])
for j in range(2,5+1,2):#2,4
dp[i][j]=dp[i-1][j-1]#昨天未持有今天买入
if i>1 and dp[i-1][j] != float('-inf'):#昨天持有并且今天依然持有
dp[i][j]&