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

这样写感觉容易理解一些。

猜你喜欢

转载自blog.csdn.net/leokingszx/article/details/81105543