題目大意是給你一些股價,選擇買入和賣出,使賺得最多,只能買入後賣出,並且只能買賣兩次。
雙指針和動態規劃的思想。
一個指針從前往後指,記錄下從開頭到當前的賺最多的一次買賣
一個指針從後往前,記錄下從當前到數組末尾賺的最多的一次買賣
同時加上當前從前往後的買賣,與ans進行比較。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices)==0:
return 0
pre_min=prices[0]
pre_max=prices[-1]
left=[0]*len(prices)
right=0
ans=0
for i in range(1,len(prices)):
pre_min=min(prices[i],pre_min)
left[i]=max(prices[i]-pre_min,left[i])
for i in range(len(prices)-2,-1,-1):
pre_max=max(prices[i],pre_max)
right=max(pre_max-prices[i],right)
ans=max(left[i]+right,ans)
return ans