121. 买卖股票的最佳时机
题目链接:121. 买卖股票的最佳时机
class Solution(object):
def maxProfit(self, nums):
"""
:type prices: List[int]
:rtype: int
"""
dp=[[0]*2 for _ in range(len(nums))]
dp[0][0]=-nums[0]
dp[0][1]=0
for i in range(1,len(nums)):
#买卖一次
dp[i][0]=max(dp[i-1][0],-nums[i])
dp[i][1]=max(dp[i-1][1],nums[i]+dp[i-1][0])
return dp[-1][-1]
因为只能买卖一次,如果第i天持有股票即dp[i][0],如果第i天持有股票即dp[i][0]。
122. 买卖股票的最佳时机 II
题目链接:122. 买卖股票的最佳时机 II
class Solution(object):
def maxProfit(self, nums):
"""
:type prices: List[int]
:rtype: int
"""
dp=[[0]*2 for _ in range(len(nums))]
dp[0][0]=-nums[0]
dp[0][1]=0
for i in range(1,len(nums)):
#允许多次卖出,所以持有可以是卖出后持有
dp[i][0]=max(dp[i-1][0],dp[i-1][1]-nums[i])
dp[i][1]=max(dp[i-1][1],nums[i]+dp[i-1][0])
return dp[-1][-1]
因为允许多次卖出,所以持有可以是卖出后持有