Menu
CoddyTech

House Robber

中等动态规划python iconjava iconcpp iconc iconjs icon+10

房子沿着街道排成一排,nums[i] 表示第 i 间房子里的钱。你可以选择从任意房子里拿钱,但不能从两间相邻的房子里同时拿钱。返回你能拿到的最大总金额。

函数

rob(nums: integer-array) → integer
numsinteger-array
按街道顺序排列的每栋房屋中的金额
返回值integer
在不同时从相邻两栋房子取钱的情况下,你能拿到的最大总额

约束条件

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • 答案最大为 5 × 106,因此可以用有符号 32 位整数表示。

示例

输入
nums = [5, 3, 4, 11, 2]
输出
16
解释
从第 0 栋和第 3 栋房子中取出 5 和 11,得到 16。可以连续跳过两栋房子,而且这种方案胜过其他所有方案:5 + 4 + 2 = 11,而 3 + 11 = 14。
challenge icon

进阶

返回要取的房屋以及总数。要重建这个列表,你必须保留表格中的哪些内容?两个累计值还能做到吗?

重置代码
def rob(nums):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [5, 3, 4, 11, 2]

预期输出

16