栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

打家劫舍问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

打家劫舍问题

目录

1.198. 打家劫舍 - 力扣(LeetCode) (leetcode-cn.com)

2.213. 打家劫舍 II - 力扣(LeetCode) (leetcode-cn.com)

3.337. 打家劫舍 III - 力扣(LeetCode) (leetcode-cn.com)


1.198. 打家劫舍 - 力扣(LeetCode) (leetcode-cn.com)

 

class Solution:
    def rob(self, nums: List[int]) -> int:
        if len(nums)==0:return 0
        if len(nums)==1:return nums[0]
        dp=[0]*(len(nums))
        dp[0]=nums[0]
        dp[1]=max(nums[0],nums[1])
        for i in range(2,len(nums)):
            dp[i]=max(dp[i-1],dp[i-2]+nums[i])
        return dp[-1]

2.213. 打家劫舍 II - 力扣(LeetCode) (leetcode-cn.com)

连成环,说明第一个元素和最后一个元素可以看做相连

那么在这种情况下就分为两种情况:

(1)考虑第一个元素,不考虑最后一个元素,结果为result1

(2)考虑最后一个元素,不考虑第一个元素,结果为result2

取最大值即可

class Solution:
    def rob(self, nums: List[int]) -> int:
        if len(nums)==0:return 0
        if len(nums)==1:return nums[0]
        if len(nums)==2:return max(nums[0],nums[1])
        result1=self.robs(nums,0,len(nums)-2)
        result2=self.robs(nums,1,len(nums)-1)
        return max(result1,result2)

    def robs(self, nums: List[int],start:int,end:int) -> int:
        # if start==end:return nums[start]
        dp=[0]*(len(nums))
        dp[start]=nums[start]
        dp[start+1]=max(nums[start],nums[start+1])
        for i in range(start+2,end+1):
            dp[i]=max(dp[i-1],dp[i-2]+nums[i])
        return dp[end]

3.337. 打家劫舍 III - 力扣(LeetCode) (leetcode-cn.com)

采用后序遍历的方法,对于每个节点都返回一个元组,第一项为不考虑这个节点考虑它的左右孩子

第二项为考虑这个节点不考虑它的左右孩子

class Solution:
    def rob(self, root: TreeNode) -> int:
        result=self.robs(root)
        return max(result)

    #后序遍历
    def robs(self, root: TreeNode) -> int:
        if root==None:
            return (0,0)
        left=self.robs(root.left)
        right=self.robs(root.right)

        cur=root.val+left[0]+right[0]
        notcur=max(left[0],left[1])+max(right[0],right[1])
        return (notcur,cur)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718045.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号