Leetcode | House Robber III
来源:互联网 发布:app软件制作教程 编辑:程序博客网 时间:2024/06/05 10:29
question
The thief has found himself a new place for his thievery again. There is only one entrance to this area, called the “root.” Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that “all houses in this place forms a binary tree”. It will automatically contact the police if two directly-linked houses were broken into on the same night.
Determine the maximum amount of money the thief can rob tonight without alerting the police.
Example 1:
3/ \2 3\ \ 3 1
Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.
Example 2:
3 / \ 4 5 / \ \ 1 3 1
Maximum amount of money the thief can rob = 4 + 5 = 9.
normal solution
使用判断root节点与root.left.left、root.left.right
root.right.left、root.right.right之和 和 root.left、root.right之和 的大小
public int rob(TreeNode root) { if(root==null) return 0; int val=0; if(root.left!=null) { val+=rob(root.left.left)+rob(root.left.right); } if(root.right!=null) { val+=rob(root.right.left)+rob(root.right.right); } return Math.max(val+root.val,rob(root.left)+rob(root.right));}
excellent solution
//用一个长度为2的数组保存选了这个节点和没选这个节点的最大值 分别对根节点的左右节点进行求得这数组 ,然后综合根节点的值进行判断
public int rob2(TreeNode root) { int []res=robSub(root); return Math.max(res[0],res[1]);} public int [] robSub(TreeNode root){ if(root==null) return new int[2]; int []left=robSub(root.left); int []right=robSub(root.right); int []res=new int[2]; res[0]=Math.max(left[0],left[1])+Math.max(right[0],right[1]); res[1]=root.val+left[0]+right[0]; return res;}
- LeetCode House Robber III
- [LeetCode] House Robber III
- leetcode---House Robber III
- 《leetCode》:House Robber III
- [LeetCode]House Robber III
- [leetcode] House Robber III
- leetcode House Robber III
- LeetCode:House Robber III
- LeetCode House Robber III
- Leetcode | House Robber III
- Leetcode House Robber III
- [leetcode] 337. House Robber III
- leetcode笔记:House Robber III
- LeetCode#337. House Robber III
- leetcode 337:House Robber III
- LeetCode *** 337. House Robber III
- [leetcode]337. House Robber III
- LeetCode 337 House Robber III
- Leetcode | Path Sum III
- 第十五周-字符串处理new
- jquery中DOM节点操作(三)
- PIX学习路径-3-PIXHAWK二次开发之前需要知道的事
- 第十五周-字符串分段(串)
- Leetcode | House Robber III
- SDIO接口介绍
- python 爬虫数据清洗
- shell脚本的两种执行方式区别举例
- 卡尔曼滤波
- 原生的ajax
- Apache Curator简单使用(三)
- 第十五周-字符串逆序输出
- Spark转换算子和执行算子