LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub
class Solution:
    def rob(self, nums: List[int]) -> int:
        def rob_div(nums):
            pre, curr = 0, 0
            for i in nums:
                pre, curr = curr, max(curr, pre + i)
            return curr
        if not nums:
            return 0
        if len(nums) == 1:
            return nums[0]
        return max(rob_div(nums[:-1]), rob_div(nums[1:]))

动态规划 中等

分别计算 nums[0:n-1]nums[1:n] 的最优解就好

https://leetcode-cn.com/problems/house-robber-ii/