leetcode,買賣股票3,python版本
阿新 • • 發佈:2019-02-16
def maxProfit(prices): # 分別正序和逆序掃描序列。 # 正序序列得出從頭往後到某一天賣出時的最大收益。 # 逆序序列得出從後玩前到某一天賣出時的最大收益。 # 然後兩個和加起來,取最大即可。 buy_price = prices[0] sell_price = prices[-1] leng = len(prices) max_profit_1 = [0 for i in range(leng)] max_profit_2 = [0 for i in range(leng)] max_pro = 0 max_pro2 = 0 for i in range(leng - 1): #正序,類似於買賣股票1 buy_price = min(buy_price, prices[i]) cur_profit = prices[i + 1] - buy_price max_pro = max(cur_profit,max_pro) max_profit_1[i+1] = max_pro for i in range(leng,0,-1): #反過來算一遍。 sell_price = max(sell_price,prices[i-1]) cur_profit = sell_price - prices[i-1] max_pro2 = max(cur_profit,max_pro2) max_profit_2[i - 1] = max_pro2 ans = 0 for i in range(leng): #累加取最大 ans = max(ans, max_profit_1[i] + max_profit_2[i]) print max_profit_1 print max_profit_2 print ans return ans
這樣寫感覺容易理解一些。