LC 速查

HOT 100索引 › B15 动态规划 Dynamic Programming

LC 198打家劫舍House Robber 中等

数组表示各家现金,不能偷相邻两家,求能偷到的最高金额。

思路 线性 DP:f1 为偷到当前家的最大值,转移 f1 = max(f1, f0 + x),两变量滚动。时间 O(n)。

class Solution:
    def rob(self, nums: List[int]) -> int:
        f0 = f1 = 0
        for x in nums:
            f0, f1 = f1, max(f1, f0 + x)
        return f1
← 上一题 杨辉三角完全平方数 下一题 →