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文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

若依项目部署--传统架构--未完待续
若依项目介绍 项目源码获取 #Git工具下载 dnf -y install git #若依项目获取 git clone https://gitee.com/y_project/RuoYi-Vue.git项目背景 随着企业信息化需求的增加,传统开发模式存在效率低,重复劳动多等问题。若依项目通过整合主流技术框架&…...

简单聊下阿里云DNS劫持事件
阿里云域名被DNS劫持事件 事件总结 根据ICANN规则,域名注册商(Verisign)认定aliyuncs.com域名下的部分网站被用于非法活动(如传播恶意软件);顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...

论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...
Qt Quick Dialogs模块功能及架构
Qt Quick Dialogs 是 Qt Quick 的一个附加模块,提供了一套用于创建和使用系统对话框的 QML 类型。在 Qt 6.0 中,这个模块经过了重构和增强。 一、主要功能和特点 1. 对话框类型 Qt Quick Dialogs 在 Qt 6.0 中提供了以下标准对话框类型: …...