gary@interview:~/interview/coding/213-house-robber….md$
$ cat ./coding/213-house-robber-ii.md
[Coding]

213. House Robber II

────────────────────────────────────────────────────────────

213. House Robber II

基本上先完成 198. House Robber 自頂向下或自底向上都沒關係,接著判斷要不要偷第一家或最後一家,取比較大的值。

class Solution:

    def rob_one(self, nums: List[int]) -> int:
        p1 = nums[0]
        p2 = max(p1, nums[1])
        res = max(p1, p2)
        for i in range(2, len(nums)):
            res = max(p2, nums[i] + p1)
            p1 = p2
            p2 = res
        return res

    def rob(self, nums: List[int]) -> int:
        if not nums:
            return 0
        if len(nums) <= 2:
            return max(nums)

        t1 = self.rob_one(nums[:-1])
        t2 = self.rob_one(nums[1:])
        return max(t1, t2)
--tags#Dynamic Programming
$ ls ./coding/ | grep -v 213-house-robber-ii
265. Paint House II256. Paint House143. Reorder List1762. Buildings With an Ocean View
← cd ../codingcd ~