算法——打家劫舍问题
程序员文章站
2022-07-12 09:08:27
...
树状排列问题
链接: leetcode.
解题思路:动态规划,利用两个哈希表,一个表示偷当前节点,另一个表示不透当前节点的最大收益。状态转移,偷当前节点的状态,由两个子节点的不偷状态加上当前节点值组成,不偷当前节点的状态,由不偷或者偷子节点的最大值转化过来。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
Map<TreeNode, Integer> f = new HashMap<>(), g = new HashMap<>();
public int rob(TreeNode root) {
dfs(root);
return Math.max(f.getOrDefault(root, 0), g.getOrDefault(root, 0));
}
public void dfs(TreeNode root) {
if(root == null) return;
dfs(root.left);
dfs(root.right);
f.put(root, root.val + g.getOrDefault(root.left, 0) + g.getOrDefault(root.right, 0));
g.put(root, Math.max(f.getOrDefault(root.left, 0), g.getOrDefault(root.left, 0)) +
Math.max(f.getOrDefault(root.right, 0), g.getOrDefault(root.right, 0)));
}
}
上一篇: 周某打家劫舍问题
下一篇: 干货|Java集合实现斗地主洗牌发牌
推荐阅读
-
居理新房研究院:低频长周期场景下的算法设计
-
Mysql5.7中使用group concat函数数据被截断的问题完美解决方法
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
个人所得税app常见的五大问题及解决方法介绍
-
解决mysql ERROR 1045 (28000)-- Access denied for user问题
-
selenium处理元素定位点击无效问题
-
vs2015/vs2013中mvc5 viewbag总是出现问题该怎么办?
-
企业做SEO优化前需要考虑哪些问题?
-
企业官网SEO优化被忽略的问题 你可能想错了
-
解决Python plt.savefig 保存图片时一片空白的问题