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
这样写感觉容易理解一些。