一起学习LeetCode热题100道(42/100)

news2024/9/22 5:42:34

42.将有序数组转换为二叉搜索树(学习)

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵
平衡
二叉搜索树。

示例 1:
在这里插入图片描述
输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:
在这里插入图片描述

示例 2:
在这里插入图片描述
输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 按 严格递增 顺序排列

解析:
一、基本情况处理:
1.如果输入的数组nums为空(即长度为0),则没有元素可以构成树,因此返回null。

二、找到中间元素:
1.使用Math.floor(nums.length / 2)计算数组的中间索引。由于数组索引是从0开始的,这个操作确保了我们总能找到中间位置的元素(如果数组长度是奇数)或两个中间位置元素中的一个(如果数组长度是偶数,这里我们选择靠左的那个)。
2.将中间索引对应的元素值赋给根节点root。

三、递归构建子树:
1.使用slice方法将数组分为两部分:左半部分(nums.slice(0, mid))和右半部分(nums.slice(mid + 1))。注意,这里mid + 1是因为slice的结束索引是不包含的,我们需要从中间元素的下一个位置开始截取右半部分。
2.对左半部分数组递归调用sortedArrayToBST函数,将返回的结果作为根节点的左子树。
3.对右半部分数组递归调用sortedArrayToBST函数,将返回的结果作为根节点的右子树。

四、返回根节点:
1.完成上述步骤后,我们得到了一个以nums[mid]为根节点,左子树由左半部分数组构建,右子树由右半部分数组构建的平衡二叉搜索树。返回这个根节点。

var sortedArrayToBST = function (nums) {
    if (nums.length === 0) {
        return null;
    }

    // 找到数组的中间元素  
    const mid = Math.floor(nums.length / 2);
    const rootVal = nums[mid];
    const root = new TreeNode(rootVal);

    // 递归构建左子树和右子树  
    root.left = sortedArrayToBST(nums.slice(0, mid));
    root.right = sortedArrayToBST(nums.slice(mid + 1));

    return root;
};

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

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

相关文章

python连接mysql+mycat读写分离实现

python连接mysql >>>import pymysql >>>connpymysql.connect(host"192.168.118.57",port3306,database"test",user"root",password"root") >>> cursorconn.cursor() >>> cursor.execute(&quo…

ISO 13485认证:医疗器械行业的质量护航者

在医疗器械行业&#xff0c;产品质量关乎生命。为确保每一件医疗器械的安全与可靠&#xff0c;ISO 13485认证作为全球公认的质量管理体系标准&#xff0c;正为无数企业提供强大的质量保障。对于企业来说&#xff0c;获得这一认证不仅是质量管理的提升&#xff0c;更是开拓全球市…

FFmpeg源码:av_log2函数分析

一、av_log2函数的声明 av_log2函数声明在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的头文件libavutil/common.h中&#xff1a; #ifndef av_log2 av_const int av_log2(unsigned v); #endif 该函数作用是&#xff1a;求形参v是2的多少次幂&#…

【漏洞复现】某成科信票务管理系统 TicketManager SQL注入漏洞

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 某成科信票务管理系统以私有/公有云为基础部署&#xff0c;实现了基础六管控多协同的智慧票务系统。该系…

企业的安全管家——加密软件

一、加密软件的重要性 数据安全保护&#xff1a;加密软件能够对企业数据进行加密处理&#xff0c;确保即使数据被窃取&#xff0c;也无法被未经授权的人员轻易解密。 合规性要求&#xff1a;许多行业和企业都面临严格的数据保护法规要求&#xff0c;如GDPR、HIPAA等&#xff…

和小米比起来希喂宠物空气净化器怎么样?

有宠物用哪个牌子空气净化机比较好呢&#xff1f;有宠物的家庭除异味、除毛、除菌需求比不养宠的更大&#xff0c;所以有宠物的家庭选空气净化器时一定要着重看这几点。 最近&#xff0c;我发现身边的朋友们都开始重视起家居空气质量&#xff0c;特别是有了宠物之后&#xff0…

Linux笔记 --- 文件属性

在操作文件时时常要获取文件的属性&#xff0c;比如类型、大小、权限、所有者等等信息&#xff0c;这些信息对于文件的传输管理等非常重要&#xff0c;而这些信息则可以通过下面这些函数获取。 这三个函数功能相同&#xff0c;区别在于&#xff0c;stat参数是文件名字&#xff…

git的下载与安装(Windows)

Git是一个开源的分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称DVCS&#xff09;&#xff0c;它以其高效、灵活和强大的功能&#xff0c;在现代软件开发中扮演着至关重要的角色。 git官网&#xff1a;Git (git-scm.com) 1.进入git官网 2…

[图解]用例规约之扩展路径

1 00:00:01,710 --> 00:00:03,670 基本路径写完之后 2 00:00:04,690 --> 00:00:07,270 接下来就是扩展路径 3 00:00:08,620 --> 00:00:14,000 扩展路径就是系统要处理的意外和分支 4 00:00:14,010 --> 00:00:19,710 系统要处理的 5 00:00:20,970 --> 00:00:…

【题解】【高精度】—— [NOIP2003 普及组] 麦森数

【题解】【高精度】—— [NOIP2003 普及组] 麦森数 [NOIP2003 普及组] 麦森数题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 1.题意解析1.1.求位数1.2.输出最后500位1.2.1.输出1.2.2.高精度乘法1.2.3.快速幂 2.AC代码 [NOIP2003 普及组] 麦森数 题目描述 形如 2…

(一)C++学习笔记(满满的都是水货咕噜!)

1、基本概念 1 – 什么是C c就是c语言的扩展&#xff0c;完全兼容c语言 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效&#xff0c;简洁&#xff0c;快速和可移植的传统。 c融合了3种不同的编程方式: c语言代表的过程性语言. c在c语言基础上添加…

爬虫 Web Js 逆向:RPC 远程调用获取加密参数(2)使用 JsRPC 框架

RPC (Remote Procedure Call) 是远程调用的意思。 在 Js 逆向时&#xff0c;本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信&#xff0c;这样可以直接调用浏览器中的一些函数方法&#xff0c;不必去在意函数具体的执行逻辑&#xff0c;可以省去大量的…

苹果macOS 15 Sequoia投屏功能 实现Mac上iPhone桌面管理

8月14日消息&#xff0c;苹果最新的 iOS 18 和 macOS 15 Sequoia 测试版为 iPhone 投屏功能带来了重大更新。用户可以直接在 Mac 上管理 iPhone 桌面。 iPhone 镜像功能 macOS Sequoia最大的更新是带来了iPhone 镜像功能&#xff0c;这个功能能让给 Mac 用户将 iPhone 的屏幕镜…

免费版音频格式转换器哪个好用?6大热门工具对比

在数字音频领域&#xff0c;音频格式转换已成为日常生活和工作中必不可少的一部分。无论是为了适配不同的设备&#xff0c;还是为了压缩音频文件以节省存储空间&#xff0c;音频格式转换器都能为我们提供极大的便利。市面上有众多免费版音频格式转换器&#xff0c;但哪些工具真…

【向量数据库】Ubuntu编译安装FAISS

参考官方的安装指导&#xff1a;https://github.com/facebookresearch/faiss/blob/main/INSTALL.md&#xff0c;不需要安装的可以跳过 ~$ wget https://github.com/facebookresearch/faiss/archive/refs/tags/v1.8.0.tar.gz ~$ tar -zxvf v1.8.0.tar.gz ~$ cd faiss-1.8.0 ~$ …

舵机模块学习

舵机是一种根据输入PWM信号占空比来控制输出角度的装置 执行逻辑&#xff1a;PWM信号输入到控制板&#xff0c;给控制版一个指定的目标角度&#xff0c;然后电位器检测输出轴的当前角度&#xff0c;如果大于目标角度&#xff0c;电机反转&#xff0c;小于正转&#xff0c;最终使…

Yearning开源SQL审核平台本地Linux系统部署与远程登录语句审核

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 本文主要介绍在 Linux 系统简单部署 Yearning 并结合 cpolar 内网穿透工具实现远程访问&#xff0c;破除…

【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task01 DeepSeek简易AI助手

【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向 Task01 正处于拿毕业证求职和实习离职期间的过渡期&#xff0c;想着闲着也是闲着&#xff0c;索性拉上本科同学队友报名参加AI比赛&#xff0c;想方设法卷个项目经验出来。 Task1的任务主要是体验从0开始搭建一个AI对…

联想季度收入强劲增长,全球PC市场回暖

联想季度收入显著增长 2024年8月14日&#xff0c;北京——中国科技巨头联想集团公布了其第一季度财报&#xff0c;收入同比增长20%&#xff0c;达到了154亿美元。这一增幅超过了LSEG调查分析师预期的141亿美元。这一财报标志着联想在经历了连续五个季度的收入下滑后&#xff0…

seata的使用(SpringBoot项目整合seata)

文章目录 1、解压 seata-server-1.7.1.zip2、启动 双击 seata-server.bat3、启动 seata 控制台用户界面4、所有分布式事务相关数据库要有undo-log5、项目引入seata依赖6、项目添加seata配置7、代码实现&#xff1a; 1、解压 seata-server-1.7.1.zip 2、启动 双击 seata-server.…