当前位置: 首页 > news >正文

LeetCode 热题 HOT 100 (038/100)【宇宙最简单版】

【动态规划】No. 0337 打家劫舍III【中等】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【力扣详解】谢谢你的支持!

题目描述:小偷发现了一个可行窃的地区:除了入口 root 外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警

  • 给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额

  • 示例 :

    输入: root = [3,2,3,null,3,null,1]
    输出: 7
    解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7

🔥 思路:后序遍历 + DP (当前节点对应的盗取的最高金额可能有两种情况)

  • 当前节点获取的 node.val + 不偷左孩子获取的最高金额 + 不偷右孩子获取的最高金额
  • 不偷不偷当前节点获取的 0 + 偷/不偷左孩子获取的最高金额 + 偷/不偷右孩子获取的最高金额
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def rob(self, root: Optional[TreeNode]) -> int:def robTree(node):  # 后序遍历,因为要用到左右孩子的结果if not node: return [0, 0]l_v = robTree(node.left)r_v = robTree(node.right)val_1 = node.val + l_v[1] + r_v[1]  # 偷   curval_2 = max(l_v) + max(r_v)         # 不偷 curreturn [val_1, val_2]return max(robTree(root))

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

http://www.lryc.cn/news/427122.html

相关文章:

  • SQLALchemy ORM 的关联关系之 ORM 中的一对一
  • 模型部署 - docker
  • 学懂C++(三十四):深入详解 C++ 高级多线程编程技术中的并发设计模式
  • 大数据产业链图谱_产业链全景图_大数据行业市场分析
  • photonserver 部署相关教程
  • GEE训练:sentinel-1数据的投影、显示和导出
  • 后端学习笔记(七)--MyBatis参数传递
  • uniapp 网络请求自动处理loading
  • 【Solidity】函数的使用
  • 详解golang内存管理
  • C++ 线程 一些同步方式
  • 【开发语言】编译型语言和解释性语言有啥区别?
  • 将A服务器上指定文件夹中的文件,批量同步到B服务器上
  • 2024.8.17
  • 十分钟搭建一个RTMP服务器
  • Spring Boot解决循环注入问题
  • 《数据挖掘》期末考核重点
  • Golang | Leetcode Golang题解之第334题递增的三元子序列
  • HarmonyOs编写一个案例实现一个照片选择(阶段进阶 四种需求 逐一完善)
  • 洗衣机洗衣服一些知识
  • 探索文件系统:高效、可靠的文件管理与访问机制
  • 启程与远征Ⅸ--优化生成式人工智能以满足业务需求的框架
  • canal数据同步工具介绍与应用
  • ubuntu18.04 设置静态地址
  • jira敏捷开发管理工具视频教程Confluence工作流协同开发(2024)
  • 【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
  • Python知识点:如何使用Boto3进行AWS服务管理
  • Java - 正则表达式
  • Vue一款流行的JavaScript前端框架
  • GPT-SoVITS