代码思路:设定每一天结束后的状态,未持股0卖出为状态0,已持股0卖出为状态1,未持股1卖出为状态2,已持股1卖出为状态3,未持股2卖出为状态4,初始化第一天的各种状态后,根据当前状态的改变原因以及前一天的状态设定每一天状态的值,完成所有每一天的遍历后,最大股票利益必定为0、状态3和状态5三者的最大值
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if prices==[]:
return 0
n=len(prices)
a=[[0]*5]*n
a[0][0],a[0][1]=0,-prices[0]
a[0][2],a[0][3],a[0][4]=float('-inf'),float('-inf'),float('-inf')
for i in range(1,n):
a[i][0]=0
a[i][1]=max(a[i-1][0]-prices[i],a[i-1][1])
a[i][2]=max(a[i-1][1]+prices[i],a[i-1][2])
a[i][3]=max(a[i-1][2]-prices[i],a[i-1][3])
a[i][4]=max(a[i-1][3]+prices[i],a[i-1][4])
return max(0,a[n-1][2],a[n-1][4])