LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub
'''
Description: 
Autor: Au3C2
Date: 2020-12-24 15:14:57
LastEditors: Au3C2
LastEditTime: 2020-12-24 15:15:26
'''
class Solution:
    def rob(self, nums: List[int]) -> int:
        n = len(nums)
        if n <= 3:
            if n == 3:
                return max(nums[0]+nums[2],nums[1])
            elif n == 2 or n == 1:
                return max(nums)
            elif n == 0:
                return 0
        pre3, pre2 = nums[0], nums[1]
        pre1 = pre3 + nums[2]
        for i in range(3,n):
            cur = nums[i] + max(pre2,pre3)
            pre3 = pre2
            pre2 = pre1
            pre1 = cur
        return max(pre2,cur)
# 同 面试题 17.16. 按摩师 ,动态规划,简单
# https://leetcode-cn.com/problems/house-robber/

👇官方题解

class Solution:
    def rob(self, nums: List[int]) -> int:
        if not nums:
            return 0

        size = len(nums)
        if size == 1:
            return nums[0]
        
        pre, cur = nums[0], max(nums[0], nums[1])
        for i in range(2, size):
            pre, cur = pre, max(pre + nums[i], cur)
        
        return cur