这题相当于在有第一位的情况下不能选择最后一个。就前n-1和除了第一个之外的2个数组进行比较。代码如下:
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) <= 0:
return 0
if len(nums) == 1:
return nums[0]
def robb(nums):
if nums == []:
return 0
nums += [0, 0]
for i in range(len(nums) - 2):
nums[i] = max(nums[i] + nums[i - 2], nums[i - 1])
return nums[-3]
return max(robb(nums[:-1]), robb(nums[1:]))
本文介绍了一种使用动态规划解决特定问题的方法——房屋打劫问题。该问题要求在不连续选择相邻房屋的情况下,计算能获得的最大金额。通过定义辅助函数并利用动态规划的思想,实现了两种情况的求解:排除首尾房屋的选择冲突。
3481

被折叠的 条评论
为什么被折叠?



