House Robber III

2024-01-04 13:08
文章标签 iii house robber

本文主要是介绍House Robber III,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题一开始的确不好转化到tree的处理,这个学习了,最重要的是下面的错误,同上一题II,从根节点出发,这个无法变化,但若是从子节点出发,就完全可以是从子节点(这时相当于根)出发,或者,从子节点的子节点出发,所以必须要比较大小

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
public class Solution {public int rob(TreeNode root) {if (root == null) {return 0;}int[] result = robHelper(root);return Math.max(result[0], result[1]);}private int[] robHelper(TreeNode node) {if (node == null) {return new int[]{0, 0};}int[] left = robHelper(node.left);int[] right = robHelper(node.right);int[] result = new int[2];result[0] = node.val + left[1] + right[1];//result[1] = left[0] + right[0];result[1] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);return result;}
}


这篇关于House Robber III的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569427

相关文章

HDU 2064 汉诺塔III(水题)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=2064 题目大意: 有三根杆,求把n个圆盘从左边移到右边,最少需要移动圆盘的次数。移动规则为大盘不能放在小盘上,比原始的汉诺塔题改变的地方是,只能通过中间的杆往左右两边的杆移动。 心得: 此题心得在题外,不在题内,初看此题,尼玛吓了一跳,好像很难的样子,手贱百度了一下,只注意到俩字“水题”,赶紧

[LeetCode] 213. House Robber II

题:https://leetcode.com/problems/house-robber-ii/description/ 题目 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at t

Sui Hacker House曼谷站报名开启:在Devcon 2024期间探索Sui区块链创新

Sui 曼谷 Hacker House 报名开启 Sui Bangkok Hacker House 将在曼谷于 2024 年 11 月 4 日至 17 日举办。诚邀开发者深入学习 Move 语言,在 Sui 网络上构建 MVP ,在充满活力的曼谷中度过难忘的两周。 诚挚地邀请开发者加入为期两周的 Sui Bangkok Hacker House。 你将与其他开发者一起学习 Move 语言

推荐适合中秋的SVG模版(第III期)

宝藏模版 往期推荐(点击阅读): 趣味效果|高大上|可爱风|年终总结I|年终总结II|循环特效|情人节I|情人节II|妇女节|儿童节I|儿童节II|儿童节III|618I|618II|父亲节|丝滑动画|端午节I|端午节II|滑动妙用|图片轮播I|图片轮播II|又红又专|中秋节I|中秋节II|双十一I|双十一II|世界杯|圣诞节|新年|兔年春节|元宵节|愚人节|杂志范儿|520/521I|520

day-47 最大连续1的个数 III

思路 滑动窗口:如果用left和right表示连续1的左右边界,那么意味着可以把0修改为1的次数为k次 解题过程 用一个变量num记录left和right之间0的个数,当num<=k时,right++,num>k时,将left向右移动,直到不再满足num>k Code class Solution {public int longestOnes(int[] nums, int k) {in

[M滑动窗口] lc1004. 最大连续1的个数 III(滑动窗口+模板题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:1004. 最大连续1的个数 III 题单: 滑动窗口(定长/不定长/多指针) 二、不定长滑动窗口 §2.1 求最长/最大 2. 题目解析 思路: 比较直接的滑动窗口哈,好像也没什么需要注意的点。 前缀和+二分 也不是不能做。官解也提到了这个点。但对于本题来讲,看到就是滑窗,没毛病吧。 时间复

力扣2402.会议室 III

力扣2402.会议室 III 双堆模拟 一个堆存未占用的会议室编号一个堆存已占用的结束时间和编号 class Solution {public:int mostBooked(int n, vector<vector<int>>& meetings) {int cnt[n];memset(cnt,0,sizeof(cnt));priority_queue<int,vector<int>,g

【dp力扣】买卖股票的最佳时机III

目录 审题 通过动态规划固定套路思考: 1、定义状态表示(关键) 2、推导状态转移方程(重点) 对于buy(可买入股票): 回顾状态表示: 第一种情况: 第二种情况: 联立两种情况(取两种情况的最大值):​ 对于own(持有股票) 回顾状态表示: 第一种情况: 第二种情况: (最终结果)联立两种情况(还是取max): 3、初始化特殊数据(重点) 第0天交易0次:

回溯——2.组合总和III

力扣题目链接 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。解集不能包含重复的组合。 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]] 解题思路

P10878 [JRKSJ R9] 在相思树下 III 题解

Description 给定一个长为 n n n 的序列 a 1 … n a_{1\dots n} a1…n​,需要对它进行两种操作共 n − 1 n-1 n−1 次。 对一个长度为 l l l 的序列 b 1 … l b_{1\dots l} b1…l​ 进行一次操作将会把序列变为一个长为 l − 1 l-1 l−1 的序列 c 1 … l − 1 c_{1\dots l-1}