码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】213. House Robber II

时间:2018-06-19 18:25:18      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:就是   nbsp   code   分享图片   for   span   ima   color   情况   

题目如下:

技术分享图片

解题思路:【leetcode】198. House Robber 思路一样,也是动态规划。只不过本题新增了一个约束,就是nums[0]和nums[len(nums)-1]不能同时抢。那么我们可以分别针对nums[0]抢还是不抢这两种情况做两次动态规划。如果nums[0]抢的话,那么抢劫的区间就是nums[0]~nums[len(nums)-2];如果不抢,区间就是nums[1]~nums[len(nums)-1]。两种情况相比较取最大值就是结果。

代码如下:

class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) == 0:
            return 0
        elif len(nums) == 1:
            return nums[0]
        elif len(nums) == 2:
            return max(nums)

        # rob nums
        dp = [0 for x in nums]
        dp[0] = nums[0]
        dp[1] = max(nums[0], nums[1])
        # do not rob nums[0]
        dp_2 = [0 for x in nums]
        dp_2[1] = nums[1]
        dp_2[2] = max(nums[1], nums[2])

        for i in xrange(2,len(nums)):
            if i >= 2 and i < len(nums)-1:
                dp[i] = max(dp[i-1],dp[i-2]+nums[i])
            if i >= 3 and i < len(nums):
                dp_2[i] = max(dp_2[i - 1], dp_2[i - 2] + nums[i])

        return max(dp_2[-1],dp[-2])
        

 

【leetcode】213. House Robber II

标签:就是   nbsp   code   分享图片   for   span   ima   color   情况   

原文地址:https://www.cnblogs.com/seyjs/p/9199775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!