188.买卖股票的最佳时机IV
class Solution(object):
def maxProfit(self, k, prices):
"""
:type k: int
:type prices: List[int]
:rtype: int
"""
dp = [[0]*(2*k+1) for i in range(len(prices))]
for j in range(2*k+1):
if j%2==1:
dp[0][j]=-prices[0]
for m in range(1, len(prices)):
for l in range(2*k+1):
if l==0:
dp[m][l]=0
elif l%2==1:
dp[m][l]=max(dp[m-1][l], dp[m-1][l-1]-prices[m])
elif l%2==0:
dp[m][l]=max(dp[m-1][l], dp[m-1][l-1]+prices[m])
return dp[-1][-1]
309.最佳买卖股票时机含冷冻期
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
dp = [[0]*3 for i in range(len(prices))]
dp[0][0]=0
dp[0][1]=-prices[0]
dp[0][2]=0
for j in range(1, len(prices)):
dp[j][0]=0
dp[j][1]=max(dp[j-1][1], dp[j-1][0]-prices[j], dp[j-2][2]-prices[j])
dp[j][2]=max(dp[j-1][2], dp[j-1][1]+prices[j])
return dp[-1][-1]
714.买卖股票的最佳时机含手续费
class Solution(object):
def maxProfit(self, prices, fee):
"""
:type prices: List[int]
:type fee: int
:rtype: int
"""
dp = [[0]*3 for i in range(len(prices))]
dp[0][0]=0
dp[0][1]=-prices[0]
dp[0][2]=0
for j in range(1, len(prices)):
dp[j][0]=0
dp[j][1]=max(dp[j-1][1], dp[j-1][0]-prices[j], dp[j-1][2]-prices[j])
dp[j][2]=max(dp[j-1][2], dp[j-1][1]+prices[j]-fee)
return dp[-1][-1]