2476. 二叉搜索树最近节点查询

Problem: 2476. 二叉搜索树最近节点查询

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

找到所有节点然后再找满足要求的查询的值,一眼排序+二分,看了眼数据范围,满足O(nlogn)。

解题方法

dfs获取所有节点的值,然后二分查找,获得所有满足条件的值。

复杂度

时间复杂度: O ( n l g n ) O(nlgn) O(nlgn) 遍历查询 O ( n ) O(n) O(n)+二分 O ( l g n ) O(lgn) O(lgn)

空间复杂度: O ( n ) O(n) O(n) n个节点,递归调用栈需要 O ( n ) O(n) O(n)的空间,存储答案也是 O ( n ) O(n) O(n)的空间。

Code

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def closestNodes(self, root: Optional[TreeNode], queries: List[int]) -> List[List[int]]:# 排序+二分nodes_lis = [] # 获取所有节点def dfs(node):if not node: return nodes_lis.append(node.val)if node.left: dfs(node.left)if node.right: dfs(node.right)dfs(root)nodes_lis.sort() # 升序n = len(nodes_lis)answers_lis = []for q in queries:tem = []l, r = 0, n - 1while l < r:mid = l + r + 1 >> 1if nodes_lis[mid] <= q:l = midelse:r = mid - 1if nodes_lis[l] <= q:tem.append(nodes_lis[l])else:tem.append(-1)r = n - 1 # 无需l=0,因为大于等于q的值必定在小于等于q的值的右边while l < r:mid = l + r >> 1if nodes_lis[mid] >= q:r = midelse:l = mid + 1if nodes_lis[l] >= q:tem.append(nodes_lis[l])else:tem.append(-1)        answers_lis.append(tem)return answers_lis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【elementUi-table表格】 滚动条 新增监听事件; 滚动条滑动到指定位置;

1、给滚动条增加监听 this.dom this.$refs.tableRef.bodyWrapperthis.dom.scrollTop 0let _that thisthis.dom.addEventListener(scroll, () > {//获取元素的滚动距离let scrollTop _that.dom.scrollTop//获取元素可视区域的高度let clientHeight this.dom.clientHeigh…

Matlab/simulink基于MPPT风光储微电网建模仿真(持续更新)

​ 2.Matlab/simulink基于MPPT风光储微电网建模仿真&#xff08;持续更新&#xff09; 1.Matlab/simulink基于vsg的风光储调频系统建模仿真&#xff08;持续更新&#xff09;

QT 打包命令 windeployqt 在windows平台应用

本文以qt6.2.4 MSVC2019 为例&#xff0c;描述打包过程。 前置条件&#xff1a;已经生成了可执行文件&#xff0c;比如xxx.exe 1.在搜索框输入QT,点击QT6.2.4(MSVC 2019 64-bit) 以你实际安装的版本为准。 2.出现如下黑屏命令行 3.在QT 项目文件下新建一个打包文件夹&#x…

VIO第2讲:IMU标定实验

VIO第2讲&#xff1a;IMU标定实验 文章目录 VIO第2讲&#xff1a;IMU标定实验5 IMU标定实验5.1 仿真数据产生5.1.1 c代码分析5.1.2 生成ros包数据 5.2 Allan方差实验&#xff08;港科大imu_utils&#xff09;5.2.1 安装5.2.2 运行 5.3 Allan方差实验&#xff08;matlab代码kali…

Vue局部注册组件实现组件化登录注册

Vue局部注册组件实现组件化登录注册 一、效果二、代码1、index.js2、App.vue3、首页4、登录&#xff08;注册同理&#xff09; 一、效果 注意我这里使用了element组件 二、代码 1、index.js import Vue from vue import VueRouter from vue-router import Login from ../vie…

基于SVM的功率分类,基于支持向量机SVM的功率分类识别,Libsvm工具箱详解

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于SVM的功率分类,基于支持向量机SVM的功率分类识别资源-CSDN文库 https://download.csdn.net/download/abc991835105/88862836 SVM应用实例, 基于…

虚拟机的四种网络模式对比

nat网络地址转换 nat网络 桥接 内网模式 仅主机

代码随想录算法训练营29期Day59|LeetCode 583,72

文档讲解&#xff1a;两个字符串的删除操作 编辑距离 编辑距离总结篇 583.两个字符串的删除操作 题目链接&#xff1a;https://leetcode.cn/problems/delete-operation-for-two-strings/description/ 思路&#xff1a; 本题和1143基本相同&#xff0c;只要求出两个字符串的…

经济学-股市指数为什么会对社会造成系统性风险

或许很多人有这个疑问&#xff1a;股价又不影响公司销售的收入&#xff0c;为什么股价下跌可能造成系统性风险&#xff1f;&#xff1f; 假设某上市公司A的股票100元1股&#xff0c;市值1000元&#xff08;10股&#xff09;&#xff0c;每年生产10件衣服&#xff0c;一件衣服卖…

【Java】java异常处理机制(实验五)

目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 1、理解java的异常处理机制 2、掌握try catch结构和thow和thows关键字的用法 二、实验内容 1、编写一个程序&#xff0c;输入某个班某门课程成绩&#xff0c;统计及格人数、不及格人数及课程平均分。设计一个异…

通天星CMSV6 车载视频监控平台信息泄露漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

【Python-语法】

Python-语法 ■ Python基础■ 数据类型■ 注释 单行注释&#xff0c;多行注释■ 编码方式 ■■■■■ ■ Python基础 ■ 数据类型 ■ 注释 单行注释&#xff0c;多行注释 ■ 编码方式 ■ ■ ■ ■ ■

【深度学习】微调通义千问模型:LoRA 方法,微调Qwen1.8B教程,实践

官网资料: https://github.com/QwenLM/Qwen/blob/main/README_CN.md 文章目录 准备数据运行微调设置网络代理启动容器执行 LoRA 微调修改 finetune/finetune_lora_single_gpu.sh运行微调 执行推理 在本篇博客中&#xff0c;我们将介绍如何使用 LoRA 方法微调通义千问模型&#…

npm设置淘宝镜像

将npm的下载源恢复为默认的官方源&#xff0c;命令如下&#xff1a; npm config set registry https://registry.npmjs.org淘宝官方提供的最新的配置淘宝镜像的方法&#xff0c;命令如下&#xff1a; npm config set registry https://registry.npmmirror.com也可以查看是否修改…

第 1 章 作业题

10 该题还算比较复杂&#xff0c;但是考虑清楚之后也还好 电路交换 建立连接的时间 发送时延 传播时延 传播时延是链路长度 每段链路的传播时延 分组交换 发送时延 传播时延 发送时延指的是报文长度除以数据率&#xff0c;经过一个节点也有发送时延&#xff0c;也是…

【小白友好】python leetcode 27 remove element

Problem: 27. 移除元素 工程思想 用一些python已有的工具&#xff1a; while val in nums:nums.remove(val)但是我们显然不要这么做对不对&#xff01; 从零开始 看题目是要in place&#xff0c;则考虑交换咯。 要把不等于val的移到前面&#xff0c;则考虑把数组分成2部分&…

MySQL sql注意点

为何写这篇博客&#xff0c;源于工作时虽然写了大量sql语句包括复杂sql。可是一但脱离sql执行环境和运行结果。发现很多东西只是在尝试中解决了问题&#xff0c;但这还远远不够。 本文列取了常用但是容易遗漏的一些知识点。另外关键词一般大写&#xff0c;为了便于阅读所以很多…

Unity 2021.3发布WebGL设置以及nginx的配置

使用unity2021.3发布webgl 使用Unity制作好项目之后建议进行代码清理&#xff0c;这样会即将不用的命名空间去除&#xff0c;不然一会在发布的时候有些命名空间webgl会报错。 平台转换 将平台设置为webgl 设置色彩空间压缩方式 Compression Format 设置为DisabledDecompre…

XGB-11:随机森林

XGBoost通常用于训练梯度提升决策树和其他梯度提升模型。随机森林使用与梯度提升决策树相同的模型表示和推断&#xff0c;但使用不同的训练算法。可以使用XGBoost来训练独立的随机森林&#xff0c;或者将随机森林作为梯度提升的基模型。这里我们专注于训练独立的随机森林。 XG…

解决Mysql的Access denied for user权限不足问题

当用客户端工具连接数据库 以root 用户登录后 无法给相关用户授权数据库等操作: 原因: root%表示 root用户 通过任意其他端访问操作 被拒绝! 授权即可: 登录server端: mysql -uroot -pxxxxx&#xff08;使用账号密码登录linux mysql服务内部&#xff09; 然后输入如下sql命令…