213. 打家劫舍 II

题目链接 213. 打家劫舍 II
思路 动态规划-打家劫舍-简单变体
题解链接 简洁写法!直接调用 198 题代码!(Python/Java/C++/Go/JS/Rust)
关键点 可以分为两种情况讨论:1. 选第一个位置 2. 不选第一个位置
时间复杂度 \(O(n)\)
空间复杂度 \(O(1)\)

代码实现:

class Solution:
    def simple_rob(self, nums):
        f0 = f1 = 0
        for x in nums:
            f0, f1 = f1, max(f1, f0+x)
        return f1

    def rob(self, nums: List[int]) -> int:
        return max(
            nums[0] + self.simple_rob(nums[2:-1]),
            self.simple_rob(nums[1:])
        )
posted @ 2024-09-18 21:50  WrRan  阅读(3)  评论(0编辑  收藏  举报