Leetcode刷题笔记1 二叉树part06

ROS自定义地图实战:从CAD到导航的完整流程 本文详细介绍了如何将CAD图纸或手绘草图高效转换为ROS机器人可直接使用的导航地图。通过解析PGM与YAML标准格式,提供从图像处理、尺度校准到集成AMCL与move_base导航栈的完整实战流程,帮助开发者跳过繁琐的SLAM建图,实现快速、精准的自定义地图部署。 阅读详情

leetcode 530 二叉树的最小绝对差

目前对于代码掌握程度还太低,所以对于一个题目的思路先从会用的方法想思路,比如暴力解法

对于二叉树的最小绝对差,因为是二叉搜索树,所以用中序遍历转为有序数组,然后求取差值

class Solution:
    def __init__(self):
        self.vec = []
    def traversal(self, root):
        if not root:
            return 
        self.traversal(root.left)
        self.vec.append(root.val)
        self.traversal(root.right)
    def getMinimumDifference(self, root: Optional[TreeNode]) -> int:
        self.traversal(root)
        if len(self.vec) < 2:
            return 0
        result = float('inf')
        for i in range(1, len(self.vec)):
            result = min(result, self.vec[i] - self.vec[i - 1])
        return resul

leetcode 501 二叉搜索树中的众数

迭代&字典:

class Solution:
    def findMode(self, root: Optional[TreeNode]) -> List[int]:
        freq = defaultdict(int)
        result = []
        if not root:
            return result
        self.searchBST(root, freq)
        max_freq = max(freq.values())
        for key, value in freq.items():
            if value == max_freq:
                result.append(key)
        return result
    def searchBST(self, cur, freq):
        if not cur:
            return
        freq[cur.val] += 1
        self.searchBST(cur.left, freq)
        self.searchBST(cur.right, freq)

leetcode 236 二叉树的最近公共祖先

递归加回溯有点难

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if root == q or root == p or root is None:
            return root
        left = self.lowestCommonAncestor(root.left, p, q)
        right = self.lowestCommonAncestor(root.right, p, q)
        if left is not None and right is not None:
            return root
        elif left is not None and right is None:
            return left
        elif right is not None and left is None:
            return right
        else:
            return None

基于应用谱减法进行语音去噪的算法 在上述代码中首先通过读取语音信号和噪声信号,将两个信号都转换为频域信号,然后计算出语音信号在各频率下的功率谱和噪声信号在各频率下的功率谱,并基于此计算信噪比,接着根据信噪比计算出阈值,并将低于阈值的能量对应的频段进行清零操作,最终实现去噪处理,最后将处理后的信号转换回时域信号。该算法采用谱减法进行降噪处理,能有效地去除语音信号中的噪声,但是在实际应用中,该方法也存在一些问题,如会对语音信号的高频部分产生影响,所以需要在应用过程中进行适当的调整。 阅读详情

相关推荐

SOI技术解析:绝缘体上硅的结构优势与应用场景

本文深入解析了SOI(绝缘体上硅)技术的核心结构、性能优势与应用场景。SOI通过在硅衬底与器件层之间引入绝缘的埋氧层,实现了优异的电隔离,从而显著降低芯片功耗、提升工作频率并增强抗干扰能力。该技术已广泛应用于5G射频前端、高性能计算、汽车电子及MEMS传感器等关键领域,是推动半导体性能持续提升的重要技术路径。

jj890的博客 402

求职力扣刷题DAY20--二叉树 part06

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;返回以该节点为根的子树。如果节点不存在,则返回。一般递归中,可以不用传数组就不传数组,传索引下标记就行了。null 的节点将直接作为新二叉树的节点。所有左子树和右子树自身必须也是二叉搜索树。,判断其是否是一个有效的二叉搜索树。合并过程必须从两个树的根节点开始。给定二叉搜索树(BST)的根节点。给你一个二叉树的根节点。返回合并后的二叉树。

qq_44486787的博客 536

PaddleOCR在医疗票据识别中的实战:从部署到业务字段提取

本文详细介绍了PaddleOCR在医疗票据识别中的实战应用,重点阐述了其离线部署方案与PP-OCRv3模型选型优势。针对医疗票据敏感数据不出本地的合规要求,文章提供了从环境搭建、模型配置到核心字段提取策略的完整流程,并分享了性能优化与系统集成的实践经验,有效解决了医疗票据自动化录入的难题。

weixin_29271053的博客 236

二叉树part06

如果有一个节点是空,那么这两个给定的节点一定在同一侧,且是不为空的那一侧。也就是要求这个祖先的左子树或者右子树必须要包含给定的两个节点。所以如果左右节点都不是空,那么左右子树就是符合要求的节点。根据值的大小进行排序,由于第一个是出现频率最大的值。出现频率,考虑使用map记录每个树节点的出现频率。递归结束时,说明当前节点是给定的节点或者遇到了空。由于终止时左右节点要么时给定的目标节点,要么是空。通过递归得到了当前节点的左节点和右节点。记录每个节点的键和出现的次数值。中序遍历后的顺序是有序的。

2501_93733665的博客 302

氮化镓GaN电机驱动实战:从器件原理到EPC驱动中心

电机驱动是工业自动化和电动交通的核心,功率器件的选择直接决定系统效率与可靠性。传统硅基IGBT和MOSFET在开关速度、损耗方面存在瓶颈,而氮化镓(GaN)作为宽禁带半导体,凭借高电子迁移率、低栅极电荷和近乎为零的反向恢复电荷,正成为电机驱动领域的热门选择。EPC建立电机驱动中心,提供完整的评估平台,覆盖从低压家电到中压伺服的应用场景。文章从GaN器件原理出发,对比传统硅器件,详解三相BLDC/PMSM驱动系统的搭建、栅极驱动与Layout设计、死区时间设置及参数计算实例,并分享测试中遇到的振铃、EMI等高

weixin_29168675的博客 322

微信小程序协同工作和发布

微信小程序协同工作和发布

qq_53114527的博客 1620

代码随想录算法训练营十六天|二叉树part06

本文介绍了三个二叉树的LeetCode题解: 二叉搜索树的最小绝对差(LeetCode530):通过中序遍历将二叉搜索树转为有序数组,计算相邻节点的差值最小值。提供了递归和迭代两种解法。 二叉搜索树中的众数(LeetCode501):利用中序遍历的有序性,统计相邻节点的频率,找出出现频率最高的元素。给出了哈希表统计和单次遍历优化的两种方法。 二叉树的最近公共祖先(LeetCode236):采用后序遍历自底向上查找,若某节点的左右子树分别包含目标节点p和q,则该节点即为最近公共祖先。代码简洁,逻辑清晰。

欢迎光临花开富贵的博客 867

深入解析APS开源排程工具OptaPlanner:链式结构与移动优化

本文深入解析了开源APS排程工具OptaPlanner的核心机制,重点阐述了链式结构如何作为排程优化的“骨架”,通过单一`previous`变量隐式定义资源与顺序,从而简化建模。文章详细介绍了基于此结构的移动操作(如`ChainChangeMove`)如何驱动优化引擎探索解空间,并自动触发影子变量更新与分数计算,为构建高效、灵活的生产计划系统提供了实践指导。

keras9composer的博客 296

DAY18|二叉树Part06|LeetCode: 530.二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236.二叉树的最近公共祖先

ning1437589742的博客 1261

手把手教你用SlowFast训练自定义手势识别数据集(附FFmpeg抽帧技巧)

本文提供了一份基于SlowFast架构训练自定义手势识别数据集的完整实战指南。文章重点剖析了数据准备的核心挑战,详细讲解了利用FFmpeg进行高、低帧率抽帧的技巧,并介绍了构建半自动标注流水线、生成符合SlowFast要求的AVA格式数据集文件的具体方法。最后,针对手势识别场景,给出了关键的模型训练配置与调优建议,帮助开发者高效完成从数据到模型的全流程。

s1t2u3的博客 909

数据仓库从明细到汇总:DWD与DWS层建模实战指南

DWS层的“主题”是指业务分析的核心场景,通常分为“用户主题、商品主题、订单主题、营销主题”等。主题的定义需紧密结合业务需求,避免“为了汇总而汇总”。例如,电商平台的核心业务需求包括“用户活跃度分析”“商品销售情况分析”“订单转化分析”,对应的DWS层主题即可定义为“用户主题汇总表”“商品主题汇总表”“订单主题汇总表”。主题定义时需注意“粒度适中”——汇总粒度既不能过细(否则与DWD层重复,失去汇总意义),也不能过粗(否则无法满足细分分析需求)。

2401_83088008的博客 644

【LeetCode题目详解】第六章 二叉树 part06 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 (day20补)

这道题目其实和二叉树:构造二叉树登场!是一个思路,比二叉树:构造二叉树登场!还简单一些。注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下标索引直接在原数组上操作,这样可以节约时间和空间上的开销。一些同学也会疑惑,什么时候递归函数前面加if,什么时候不加if,这个问题我在最后也给出了解释。其实就是不同代码风格的实现,一般情况来说:如果让空节点(空指针)进入递归,就不加if,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。

weixin_67972246的博客 978

51单片机计算器(源程序+流程图+答辩报告+综合设计)

保姆级讲解!C语言编程,使用51单片机及LCD1602显示屏实现!

m0_57007304的博客 2万+

Day20 二叉树Part06

左边最大的必定小于右边最小的即可,或者进行中序遍历,只要有序即可。利用特性,超简单,第一次做的时候还没注意到是二叉搜索树。

asherryi的博客 246

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Day18 二叉树_part06

如果count>maxCount,则需要更新众数更新maxCount为count,清空结果数组result,再将当前节点值压入结果数组result中。再将当前节点的值压入数组vec中;和上一题思路大体一致,同样是用递归函数中序遍历搜索二叉树,将二叉树节点转换为有序数组,只不过这里要增加两个指针分别指向前一个节点和当前节点,用于统计当前元素出现的次数。进入递归函数,如果当前节点为空直接返回,如果不为空递归调用searchBST遍历当前节点的左子树,这时已转换完当前节点前的所有节点。

2301_80243466的博客 282

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

算法训练营DAY17 第六章 二叉树part06

所以当双指针的值相等时,记录该元素的出现次数,比较该元素出现的次数与最大出现次数,若等于则将这个数值放入res数组,若次数大于最大次数,清除res后将该元素放入res。用双指针法,中序遍历,cur会先移动到最左边的元素,设置中序激活条件pre!=NULL,激活的情况下,比较res与目前cur与pre的差值取小的那个;中间部分,对left和right的情况分类讨论返回不同的节点(left、right、root、NULL)四种情况。用后序遍历回溯的思想,从下边开始搜索p、q,3、确定单层递归逻辑。

2401_89133587的博客 186

day16 二叉树 part06

遍历有序数组的元素出现频率,从头遍历,那么一定是相邻两个元素作比较,然后就把出现频率最高的元素输出就可以了。两种情况 需要用到回溯 故而采用后序遍历。二叉搜索树的最小绝对差。

weixin_52457534的博客 213

【随想录】Day20—第六章 二叉树 part06

先中序遍历,将遍历结果转为数组,之后判断数组中的元素是否满足升序即可。每次找到数组中的最大值,来构造一个结点,之后递归构造左子树和右子树。

weixin_44382896的博客 464

算法训练营打卡Day20 | 二叉树part06

如果index右边还有元素 (index + 1 < right),构建右子树,不然说明是叶子节点,右子树就是null。往下递归给root1的左右子树赋值(主要是终止条件,比如root1.left为空,需要root1.left = root2,这样可以继承root2.left的值)。,然后比较前一个节点的值是否小于当前节点,如果是,那说明是递增的,如果不是,说明不是递增的,不是二叉搜索树。思路:中序遍历(中左右顺序遍历),将值都存入数组中,如果数组是递增的,那么是二叉树是搜索树。迭代法,如果root!

weixin_51540348的博客 229

【代码随想录Day18】二叉树Part06

我们首先进行中序遍历,因为中序遍历可以按升序访问二叉搜索树中的所有节点。然后,我们使用一个哈希表来记录每个元素的出现次数。最后,我们找出出现次数最多的元素,并将它们作为众数返回。二叉搜索树是有序的,遇到在二叉搜索树上求什么最值啊,差值之类的,就把它想成在一个有序数组上求最值,求差值。

Shayne 的博客 659

代码随想录 day20 第六章 二叉树part06

中序遍历二叉搜索树得到一个有序数组。● 700.二叉搜索树中的搜索。● 98.验证二叉搜索树。● 654.最大二叉树。● 617.合并二叉树。

weixin_60315213的博客 664

第六章 二叉树 part06

这个题就是一个简单的二叉树搜索。我最开始是直接返回了searchBST,但是最外层没有。我就改了方式,用一个变量接住他。但是我后来看了看答案,发现直接在外部添加一个return NULL就可以了。合并二叉树和前面的对称二叉树或者相同二叉树都是一个思路。从头开始一个一个遍历结点。感觉这个可以算是前序遍历了吧。该题目和前序中序遍历构造二叉树一样,都是找到index后分割数组。只需要中序遍历即可。中序遍历如果是升序数组,则为二叉搜索树。注:二叉搜索树的中序遍历为升序数组是一个重要性质。

zuesandhera的博客 90

训练营第二十天(二叉树 part06)

合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。注意陷阱,下面的代码就是我的一个误区,误以为只要当前子树的根大于左子树,小于右子树即可,实际上要确保根结点要小于所有右子树的结点,大于所有左子树结点。给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。通过给定的数组构建最大二叉树,并且输出这个树的根节点。

weixin_45336151的博客 531

代码随想录第二十天: 二叉树part06

【代码】代码随想录第二十天: 二叉树part06。

sevune的博客 337

代码随想录打卡Day20| 二叉树part06

需要先找到最大值并分割数组,再构造左右数组并进行递归。第一题、最大二叉树 LeetCode654。注意注释中错误的部分。

lionelwhl的博客 256

代码随想录算法训练营(JAVA)| 第六章 二叉树 part06

​ 力扣654. 最大二叉树,617. 合并二叉树,700. 二叉搜索树中的搜索,98. 验证二叉搜索树 ​

like455的博客 970

leetcode刷题day18|二叉树Part06( 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先)

二叉搜索树、最近公共祖先

m0_51007517的博客 608
上一篇: Leetcode刷题笔记1 二叉树part05
下一篇: Leetcode 刷题笔记1 二叉树part07
平乐君
博客等级 码龄5年 65粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值