7.5 - hard - 25

123. Best Time to Buy and Sell Stock III

AC的答案,基本的思想是,找出一個transaction在一個index之前完成可以獲得的最大值,然后再找出,一個transaction在一個index之后完成可獲得的最大值,只要找到這個index就可以了。但是這樣做并不是DP,如果要解決at most k transaction好像這樣就不行了。那道題在188,估計下周末能夠做到。到時候再說。

class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        if len(prices) <= 1:
            return 0
        profit_from_left = [0 for _ in range(len(prices))]
        profit_from_right = profit_from_left[:]

        cur_min = prices[0]
        for i in range(1, len(prices)):
            profit_from_left[i] = max(0, prices[i] - cur_min, profit_from_left[i-1])
            cur_min = min(cur_min, prices[i])
                
        cur_max = prices[-1]
        for i in range(len(prices)-1)[::-1]:
            profit_from_right[i] = max(0, cur_max - prices[i], profit_from_right[i+1])
            cur_max = max(cur_max, prices[i])
        
        # print profit_from_left
        # print profit_from_right
        max_profit = 0
        for index in range(len(prices)):
            max_profit = max(profit_from_left[index]+profit_from_right[index], max_profit)
        return max_profit
                               
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,936評論 0 33
  • 198. House Robber【Easy DP】You are a professional robber p...
    GeniusYY閱讀 1,251評論 0 0
  • 分治方法 將問題劃分成互不相交的子問題 遞歸地求解子問題 將子問題的解組合起來 動態(tài)規(guī)劃(兩個要素:最優(yōu)子結(jié)構(gòu)、子...
    superlj666閱讀 598評論 0 0
  • 今天開始讀《金字塔原理》,這本書是講思考表達和解決問題的邏輯,爭取在四天之內(nèi)讀完吧! 思想的才是句子和段落要表達的...
    婉琳閱讀 275評論 1 1
  • 又一期《感動中國》人物新鮮出爐,帶著溫度,帶來感動,讓我們淚流滿面;如熊熊火炬,在昏昧不明的環(huán)境中引導(dǎo)我們尋找人生...
    藍田玉閱讀 664評論 0 8

友情鏈接更多精彩內(nèi)容