LeetCode236题:二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
示例 1:
输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出:3 解释:节点5和节点1的最近公共祖先是节点3 。示例 2:
输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4 输出:5 解释:节点5和节点4的最近公共祖先是节点5 。因为根据定义最近公共祖先节点可以为节点本身。示例 3:
输入:root = [1,2], p = 1, q = 2 输出:1
class Solution {
public:
bool find(TreeNode* root,TreeNode*x,stack<TreeNode*>&path)
{ if(root==nullptr) return false;path.push(root);if(root==x) return true;if(find(root->left,x,path)) return true;if(find(root->right,x,path)) return true;path.pop();//左右都为空没找到肯定不是这条路了,那就pop掉return false;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {stack<TreeNode*>ppath,qpath;find(root,p,ppath);find(root,q,qpath);//找出p q的路径while(ppath.size()!=qpath.size())//先让两条路径相同大小{ if(ppath.size()>qpath.size()) ppath.pop();else qpath.pop();}
while(ppath.top()!=qpath.top())//开始找祖先
{ppath.pop();qpath.pop();
}return ppath.top();}};
相关文章:
LeetCode236题:二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖…...
虚谷中使用PL/SQL改变模式下所有表的大小写
一、将表名转换为小写 1、原理和思路 首先,我们需要查询出指定模式下的所有表名,在xugu中,数据字典dba_tables包含了当前库下的所有表信息,我们可以使用游标(CURSOR)来遍历这些表名。 2、代码示例如下&am…...
数据挖掘的基本步骤和流程解析:深入洞察与策略实施
一、引言 在数据时代的浪潮中,数据挖掘技术已成为企业洞察市场、优化运营和驱动创新的利器。 它融合了统计学、机器学习、数据库管理和人工智能等领域的先进技术,旨在从海量数据中 提取有价值的信息。 本文将深入探讨数据挖掘的六个基本步骤,…...
BCJR算法——卷积码的最大后验译码
定义:输入序列为 其中每比特,同时相应的输出序列为 其中每一码字的长度为n,定义在i时刻的编码器的状态为,对于时刻里有 表示输出码字和卷积码第i时刻的输入和第i-1时刻的状态有关(包括寄存器和输出部分)&am…...
系统架构设计师论文《论SOA在企业集成架构设计中的应用》精选试读
论文真题 企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务…...
ceph rgw 桶分片之reshard
Ceph RGW(RADOS Gateway)的 reshard 功能是用来动态调整对象存储的分片(shard)数量,从而优化性能和存储利用率。随着数据量的增加,初始的分片设置可能无法满足性能需求,因此 reshard 功能允许用…...
开放原子开源基金会网站上的开源项目Opns存在缓冲区溢出缺陷
最近在开放原子开源基金会网站上,看到一些开源项目,之前分析出华为的鸿蒙操作系统代码,没有发现有价值的安全漏洞。现在,下载上面的Onps开源网络协议栈,既然是通讯所使用的软件,其质量应该值得信任呢&#…...
未来前端发展方向:深度探索与技术前瞻
未来前端发展方向:深度探索与技术前瞻 在数字化浪潮席卷全球的今天,前端开发作为连接用户与数字世界的桥梁,其重要性不言而喻。随着技术的不断进步和市场的不断变化,前端开发领域正经历着前所未有的变革。今天,我们将深…...
前端工程规范-2:JS代码规范(Prettier + ESLint)
Prettier 和 ESLint 是两个在现代 JavaScript 开发中广泛使用的工具,它们结合起来可以提供以下作用和优势: 代码格式化和风格统一: Prettier 是一个代码格式化工具,能够自动化地处理代码的缩进、空格、换行等格式问题,…...
Tomcat为什么要打破双亲委派?怎么保证安全
Tomcat打破双亲委派模型的原因主要是为了解决Web应用程序中的类加载冲突问题,并提供更好的灵活性和可扩展性。在Java中,双亲委派模型是一种类加载机制,它确保了类加载的安全性和一致性,但在Web应用程序的场景下,它可能…...
【C++篇】启航——初识C++(下篇)
接上篇【C篇】启航——初识C(上篇) 目录 一、引用 1.引用的概念 2.引用的基本语法 3.引用的特点 3.1 别名 3.2 不占用额外内存 3.3 必须初始化 3.4 不能为 NULL 4.引用的使用 4.1 函数参数传递 4.2 返回值 4.3 常量引用 5.引用和指针的关…...
Elasticsearch快速入门
文章目录 Elasticsearch快速入门核心概念倒排索引基本使用索引操作创建索引类型映射[了解]数据类型[了解] 查看索引删除索引 文档操作添加文档修改文档删除文档查询文档准备数据主键查询精确查询匹配查询 Elasticsearch快速入门 核心概念 Elasticsearch是面向文档的ÿ…...
uniapp微信小程序遮罩层u-popup禁止底层穿透
添加 touchmove.prevent,遮罩层底部的页面就不会滑动了微信开发者工具不生效,真机生效 <u-popup :show"showEwm" close"closeEwm" mode"center" touchmove.prevent><view class"ewmshow"></vie…...
【RocketMQ】秒杀设计与实现
🎯 导读:本文档详细探讨了高并发场景下的秒杀系统设计与优化策略,特别是如何在短时间内处理大量请求。文档分析了系统性能指标如QPS(每秒查询率)和TPS(每秒事务数),并通过实例讲解了…...
高级架构师面试题
一、技术深度方面 微服务架构的核心概念和优势: • 核心概念:将一个大型的应用拆分为多个小型的、独立部署的服务,每个服务都围绕着特定的业务功能进行构建,服务之间通过轻量级的通信机制进行交互。 • 优势: • 独…...
phpstudy简易使用
注意,本文所述的操作步骤均建立在电脑上已经完成php环境变量的配置与vscode的安装之上 、...
ubuntu server 常用配置
这里写目录标题 0001 虚拟机静态IP0002 vim tab 4个空格0003 设置时区0004 网络端口查看端口开放端口 0005 修噶机主机名 0001 虚拟机静态IP win网络链接,IP地址:192.168.220.1 - NAT网关:192.168.220.2 - ubuntu静态IP设置: ca…...
[Day 82] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
AI在風險控制中的應用案例 風險控制是企業管理中至關重要的一環,AI技術的引入為風險控制帶來了前所未有的自動化和智能化。無論是在金融、保險、製造業,還是網絡安全中,AI都能有效地分析和預測潛在風險。本文將探討AI在風險控制中的應用&…...
微信小程序map组件自定义气泡真机不显示
最近遇到一个需求需要使用uniapp的map自定义气泡 ,做完之后发现在模拟器上好好的,ios真机不显示,安卓页数时好时不好的 一番查询发现是小程序的老问题了,网上的方法都试了也没能解决 后来看到有人说用nvue可以正常显示,…...
数据结构之链表(2),双向链表
目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…...
从USB转TTL接线到手机热点配网:ESP8266无线通信保姆级避坑指南(附软件包)
从USB转TTL接线到手机热点配网:ESP8266无线通信保姆级避坑指南 当你第一次拿起ESP8266模块时,可能会被这个小巧的Wi-Fi模块惊艳到——它只有指甲盖大小,却蕴含着强大的无线通信能力。但很快,这种惊艳就会变成困惑:为什…...
艾尔登法环存档迁移终极指南:3分钟解决角色转移难题
艾尔登法环存档迁移终极指南:3分钟解决角色转移难题 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 还在为《艾尔登法环》存档版本不兼容而烦恼吗?EldenRingSaveCopier 是你的终极解决…...
我们公司全员把 Cursor 换成了自研的 全开源AtomCode
【引子】这是一篇实录——一位 CTO 用 28 天,用 Claude GLM 双模型调度,造出了一个让全公司放弃 Cursor 的工具。然后我意识到我们正在经历的事情,比"换工具"大得多。【读者承诺】接下来 15 分钟,你会拿到三件东西:一个真实案例(28 天 1,146 commits 是怎么做出来的…...
OmenSuperHub:基于WMI BIOS控制的高性能笔记本硬件管理方案
OmenSuperHub:基于WMI BIOS控制的高性能笔记本硬件管理方案 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 在惠…...
【C语言】C 语言为什么叫 C 语言呢?
【C语言】C 语言为什么叫 C 语言呢?笔记改自于王道训练营资料 其实是因为先有高级语言ALGOL 60,简称 A 语言,后来经过简化,变为 BCPL 语言,简称 B 语言,而 C 语言是在 B 语言的基础之上发展而来的ÿ…...
告别枯燥理论!用Unity脚本生命周期与预制体玩转一个“会变身的敌人”
用Unity打造会变身的敌人:脚本生命周期与预制体的实战应用在游戏开发中,敌人AI的行为设计往往是新手开发者最感兴趣也最容易感到困惑的部分。Unity的脚本生命周期和预制体系统为这类需求提供了强大支持,但教科书式的讲解常常让学习者陷入枯燥…...
星露谷物语SMAPI模组加载器:从新手到专家的完整使用指南
星露谷物语SMAPI模组加载器:从新手到专家的完整使用指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 星露谷物语SMAPI模组加载器是官方推荐的模组API,它为玩家和开发者提供…...
告别Selenium?手把手教你用Playwright录制脚本,5分钟搞定Web自动化测试
5分钟极速上手Playwright脚本录制:零代码实现Web自动化测试当产品经理突然丢给你一个刚上线的电商活动页,要求半小时内完成所有核心链路测试时,传统的手写Selenium脚本显然来不及。作为测试工程师,我最近发现微软开源的Playwright…...
Mysql?基础语法!!!
作为程序员、数据分析从业者,甚至是产品运营,SQL都是必须掌握的核心技能。不管是后端开发对数据库增删改查,还是数据分析提取业务数据,本质都是在写SQL语句。很多新手觉得SQL难,其实是没有理清逻辑。SQL的核心逻辑非常…...
3分钟掌握Topit:Mac窗口置顶终极指南,让多任务处理效率翻倍!
3分钟掌握Topit:Mac窗口置顶终极指南,让多任务处理效率翻倍! 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否曾经在Ma…...
