1. 程式人生 > >leetcode,買賣股票3,python版本

leetcode,買賣股票3,python版本

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

這樣寫感覺容易理解一些。