198. 打家劫舍

注意事项

这个题目很容易搞明白, 但是需要注意的是, 这个题目的初始化比较麻烦.


class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        n = len(nums)
        
        # guard phase, 无法递推就直接硬编码
        if n == 0:
          return 0
        elif n==1:
          return nums[0]
        elif n==2:
          return max(nums[0],nums[1])
        
        dp = [0]*n
        
        # 初始化
        dp[0] = nums[0]
        dp[1] = max(nums[0],nums[1])
        
        
        for i in range(2, n):
          dp[i] = max(dp[i-2]+nums[i], dp[i-1])
          
        return dp[-1]
       ```

你可能感兴趣的:(198. 打家劫舍)