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