LeetCode 198 House Robber Python
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 198 House Robber Python
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:一組直線排列的房屋,一個(gè)小偷要進(jìn)屋偷錢,如果小偷偷了相鄰兩座房屋就會觸發(fā)報(bào)警系統(tǒng),問在不觸發(fā)報(bào)警系統(tǒng)的前提下小偷最多可以偷到多少錢。
難度:esay
思路:這是一道標(biāo)準(zhǔn)的動態(tài)規(guī)劃問題,創(chuàng)建一個(gè)list保存小偷到每個(gè)房間能拿到最多的錢,第一個(gè)房間為本身,第二個(gè)為前兩個(gè)房間較大者。第i個(gè)房間便為(狀態(tài)轉(zhuǎn)移方程):
dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]) class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""dp = [0] * len(nums)if not nums:return 0elif len(nums) == 1:return nums[0]dp[0] = nums[0]dp[1] = max(nums[0], nums[1])for i in range(2, len(nums)):dp[i] = max(nums[i] + dp[i - 2], dp[i - 1])return dp[-1]?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的LeetCode 198 House Robber Python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab simulink 求解连续
- 下一篇: LeetCode 213 House R