198. 打家劫舍(Python)

題目

難度:★★☆☆☆
類型:數(shù)學

你是一個專業(yè)的小偷僵刮,計劃偷竊沿街的房屋据忘。每間房內(nèi)都藏有一定的現(xiàn)金峡钓,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在同一晚上被小偷闖入若河,系統(tǒng)會自動報警。

給定一個代表每個房屋存放金額的非負整數(shù)數(shù)組寞宫,計算你在不觸動警報裝置的情況下萧福,能夠偷竊到的最高金額。

示例

示例 1:

輸入: [1,2,3,1]
輸出: 4
解釋: 偷竊 1 號房屋 (金額 = 1) 辈赋,然后偷竊 3 號房屋 (金額 = 3)鲫忍。
偷竊到的最高金額 = 1 + 3 = 4 。

示例 2:

輸入: [2,7,9,3,1]
輸出: 12
解釋: 偷竊 1 號房屋 (金額 = 2), 偷竊 3 號房屋 (金額 = 9)钥屈,接著偷竊 5 號房屋 (金額 = 1)悟民。
偷竊到的最高金額 = 2 + 9 + 1 = 12 。

解答

這是一個典型的動態(tài)規(guī)劃問題篷就。

  1. 定義向量dp
    dp向量長度與輸入數(shù)組nums相同射亏,dp[i]表示到第下標為i的房屋位置,可以打劫到的最大金額竭业;

  2. 初始條件
    (1)當i=0時智润,打劫到第一家為止最大的打劫金額為這一家的金額,即dp[0]=nums[0]
    (2)當i=1時未辆,由于相鄰房屋不能同時打劫窟绷,因此打劫到第二家位置的最大打劫金額為前兩家中的最大值,即dp[1]=max(nums[0], nums[1])

  3. 狀態(tài)轉(zhuǎn)移方程
    當i>=2時咐柜,當前的總金額有兩種情況:
    (1)如果打劫下標為i的房間兼蜈,這樣下標為i-1的房間不能打劫,則當前的最大總金額為打劫到i-2房間的金額與下標為i的房間的金額之和拙友;
    (2)不打劫下標為i的房間为狸,則當前的最大金額等于打劫到i-1房間的最大金額;
    取兩個選擇的最大值遗契,因此有:
    dp[i] = max(dp[i-2] + nums[i], dp[i-1])

具體編碼實現(xiàn)如下:

class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:                                    # 沒有家舍
            return 0
        
        if len(nums) == 1:                              # 只有一家
            return nums[0]

        dp = [0 for _ in range(len(nums))]              # 定義dp
        dp[0], dp[1] = nums[0], max(nums[0], nums[1])   # 并初始化
        
        for i in range(2, len(nums)):                   # 從第3家開始循環(huán)到最后一家
            dp[i] = max(dp[i-2]+nums[i], dp[i-1])       # 狀態(tài)轉(zhuǎn)移方程

        return dp[-1]                                   # 返回最后結(jié)果

如有疑問或建議钥平,歡迎評論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市姊途,隨后出現(xiàn)的幾起案子涉瘾,更是在濱河造成了極大的恐慌,老刑警劉巖捷兰,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件立叛,死亡現(xiàn)場離奇詭異,居然都是意外死亡贡茅,警方通過查閱死者的電腦和手機秘蛇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門其做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赁还,你說我怎么就攤上這事妖泄。” “怎么了艘策?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵蹈胡,是天一觀的道長。 經(jīng)常有香客問我朋蔫,道長罚渐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任驯妄,我火速辦了婚禮荷并,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘青扔。我一直安慰自己源织,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布微猖。 她就那樣靜靜地躺著雀鹃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪励两。 梳的紋絲不亂的頭發(fā)上黎茎,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音当悔,去河邊找鬼傅瞻。 笑死,一個胖子當著我的面吹牛盲憎,可吹牛的內(nèi)容都是我干的嗅骄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼饼疙,長吁一口氣:“原來是場噩夢啊……” “哼溺森!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窑眯,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤屏积,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后磅甩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炊林,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年卷要,在試婚紗的時候發(fā)現(xiàn)自己被綠了渣聚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片独榴。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奕枝,靈堂內(nèi)的尸體忽然破棺而出棺榔,到底是詐尸還是另有隱情,我是刑警寧澤隘道,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布症歇,位于F島的核電站,受9級特大地震影響薄声,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜题画,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一默辨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苍息,春花似錦缩幸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盖喷,卻和暖如春爆办,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背课梳。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工距辆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暮刃。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓跨算,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椭懊。 傳聞我的和親對象是個殘疾皇子诸蚕,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 人生何懼,瘦有何難
    Ada_YYYYYY閱讀 193評論 0 0
  • 黑鏡第三季第二集觀看 陰謀論 為啥我在看到男主在一夜情后氧猬,信用卡被盜刷背犯,回到女方家,被提議偷拍時盅抚,有種陰謀籠罩的感...
    Chronus閱讀 459評論 0 0
  • 文圖/野笛文貝 福建省霞浦縣是有千年歷史的沿合卑澹縣,縣城所在地松城街道南部的山河泉哈,樹綠花紅蛉幸,小橋流水破讨,成為縣城一道靚...
    文貝閱讀 539評論 7 38
  • 1 如何導入外部數(shù)據(jù)庫 把原數(shù)據(jù)庫包括在項目源碼的 res/rawandroid系統(tǒng)下數(shù)據(jù)庫應(yīng)該存放在 /data...
    NiceDream閱讀 224評論 0 1