在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1]3/ \2   3\   \ 3   1输出: 7
解释: 小偷一晚能够盗取的最高金额 = 3 + 3 + 1 = 7.

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public int rob(TreeNode root) {if(root==null) return 0;int[] res=dfs(root);return Math.max(res[0],res[1]);}public int[] dfs(TreeNode root) {int[] temp=new int[2];if(root==null) return temp;int[] l=dfs(root.left);//返回子节点偷或者不偷的最优解int[] r=dfs(root.right);temp[1]=l[0]+r[0]+root.val;//当前节点被偷了,左右节点不能再偷了temp[0]=Math.max(l[0],l[1])+Math.max(r[0],r[1]);//当前节点没有偷,左右节点选择最优的偷法return temp;}
}

leetcode337. 打家劫舍 III(dfs)相关推荐

  1. leetcode337. 打家劫舍 III

    一:题目 二:上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* Tre ...

  2. 代码随想录Day48|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

    文章目录 198.打0家劫舍 213.打家劫舍II 337.打家劫舍III 198.打0家劫舍 文章讲解:代码随想录 (programmercarl.com) 题目链接:198. 打家劫舍 - 力扣( ...

  3. day40|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

    198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 ...

  4. Day48 | 198. 打家劫舍 | 213.打家劫舍Il |337. 打家劫舍 III

    198. 打家劫舍 注意点: 1. 递推公式,dp[j-2]+nums[j]表示的是加上nums[j]后dp[j]的值, dp[j-1]表示的是不加nums[j]后dp[j-1]的最大值 class ...

  5. 337.打家劫舍 III 121. 买卖股票的最佳时机

    337.打家劫舍 III 树形dp,采用后序遍历,用dp[0],dp[1] 分别表示不取当前物品,和取当前物品的所获最大利润 /*** Definition for a binary tree nod ...

  6. 10.打家劫舍 III

    leetcode337 中等 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外, ...

  7. 腾讯面试:打家劫舍 III

    题目: 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外,每栋房子有且只有一个& ...

  8. leetcode 337. House Robber III | 337. 打家劫舍 III(树形dp;什么情况下dp需要强制包含当前元素?)

    题目 https://leetcode.com/problems/house-robber-iii/ 思考:什么情况下 dp 需要强制包含当前元素? dp 过程中,需要包含当前元素 的例子: leet ...

  9. LeetCode 337. 打家劫舍 III(记忆化+递归)

    文章目录 1. 题目 1.1 相关题目: 2. 解题 2.1 递归 2.2 记忆化递归 1. 题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称 ...

最新文章

  1. 2022-2028年中国生物类似药产业深度调研及前瞻分析报告
  2. ASP.NET 快乐建站系列–2. Rad Controls 简介
  3. 如何在 Spring 生态中玩转 RocketMQ?
  4. ORACLE 定时执行存储过程
  5. 浅述 Docker 的容器编排
  6. nodejs字符与字节之间的转换
  7. 深度学习制作数据集的部分代码实现(解压zip、生成json文件)
  8. NAT集群部署solo之session server
  9. 应用需要android权限,如何找出android应用程序需要的权限
  10. Servlet+Ajax实现搜索智能提示
  11. 使用rust调用c++静态库并编译nodejs包
  12. VMware安装Windows XP虚拟机并手动安装外加驱动程序
  13. 贝塔朗菲的一般系统论:系统的有序性和目的性
  14. 推荐英语学习几本好书
  15. 【转】奇幻RPG(人物构造 与 Abstract Factory模式)
  16. MATLAB--数字图像处理 车牌识别之分离字符
  17. Tapestry 4.1.3学习心得
  18. 心情感受(倍压抑 不想上课)
  19. 憨批的语义分割重制版2——语义分割评价指标mIOU的计算
  20. alsa与PulseAudio

热门文章

  1. 三面美团Java岗,java多线程匿名内部类
  2. kuangbin专题十六 KMP扩展KMP HDU2594 Simpsons’ Hidden Talents
  3. mysql 数据库优化之执行计划(explain)简析
  4. linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现
  5. Go语言实现HashSet
  6. Delphi读写二进制文件
  7. windows下OpenSSL加密证书安装步骤与使用方法
  8. Mozilla Firefox 10.0 beta4 发布
  9. 网站架构探索(1)---序言
  10. 转:使用XMLSerializer类持久化数据