Python3实现打家劫舍问题
生活随笔
收集整理的這篇文章主要介紹了
Python3实现打家劫舍问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python3實現打家劫舍問題
原題 https://leetcode-cn.com/problems/house-robber/
你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。
給定一個代表每個房屋存放金額的非負整數數組,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。
示例 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 。解題:
class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)if n == 0:return 0if n == 1:return nums[0]if n == 2:return max(nums[0], nums[1])e0 = 0e1 = nums[0]e2 = max(nums[0], nums[1]) #動態規劃思路,但是只需要3個中間值for i in range(3, n + 1):e0, e1, e2 = e1, e2, max(nums[i-1] + e1, nums[i-2] + e0)return e2總結
以上是生活随笔為你收集整理的Python3实现打家劫舍问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酷狗概念版怎么领vip
- 下一篇: Python3有效括号问题