地址:点击打开链接
题目大意,一个非负数组,求不相邻元素的最大和,这类问题可以统统归结为动态规划问题,将总问题拆分为子问题,核心公式为d(i) = max(d(i-1), d(i-1)+nums[i])
答案:
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
if len(nums) == 1:
return nums[0]
if len(nums) == 2:
return nums[0] if nums[0] > nums[1] else nums[1]
ret = [0 for i in range(len(nums))]
ret[0] = nums[0]
ret[1] = max(nums[0], nums[1])
for i in range(2,len(nums)):
ret[i] = max(ret[i-1], ret[i-2] + nums[i])
return ret[-1]