leetcode——将有序数组转化为二叉搜索树(java)
给你一个整数数组 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.由题得这个数组是升序排列,所以我们首先需要找到其中间值,通过lo + (hi - lo) / 2来不断更新中间值(即当前根节点的值)。
2.然后分别进入左右子树的递归。
-
左子树的递归将
hi的指针往左移动。 -
右子树的递归将
lo的指针往右移动。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public TreeNode sortedArrayToBST(int[] nums) {return dfs(nums, 0, nums.length - 1);}private TreeNode dfs(int[] nums, int lo, int hi) {if (lo > hi) {return null;}int mid = lo + (hi - lo) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = dfs(nums, lo, mid - 1);root.right = dfs(nums, mid + 1, hi);return root;}
}
相关文章:
leetcode——将有序数组转化为二叉搜索树(java)
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答…...
冯诺依曼结构和进程概念及其相关的内容的简单介绍
目录 编辑 冯诺依曼体系结构 操作系统(Operator System) 进程 引入 基本概念 描述进程-PCB task_ struct内容分类 进程 ID (PID)和查看进程 进程状态: 进程创建: 进程终止: 进程间通信 (IPC): 冯诺依曼体系结构 冯诺依曼体系结构是现代计算机的基础架构…...
Native Memory Tracking 与 RSS的差异问题
一 问题现象 前一段时间用nmt查看jvm进程的栈区占用的内存大小。测试代码如下 public class ThreadOOM {public static void main(String[] args) {int i 1;while (i < 3000) {Thread thread new TestThread();thread.start();System.out.println("thread : "…...
在K8s中部署动态nfs存储provisioner
背景 之前,我已经在一台worker node上安装了local lvm 的provisioner来模拟需要本地高IOPS的数据库等stafeful应用的实现。 为了后续给虚拟机里的K8s集群安装可用的metrics和logs监控系统(metrics和logs的时序数据库需要永久存储)࿰…...
家庭财务管理系统的设计与实现
标题:家庭财务管理系统的设计与实现 内容:1.摘要 摘要:随着家庭经济的日益复杂,家庭财务管理变得越来越重要。本文旨在设计并实现一个功能强大的家庭财务管理系统,以帮助用户更好地管理家庭财务。通过对家庭财务管理需求的分析,我…...
数据结构-Stack和栈
1.栈 1.1什么是栈 栈是一种特殊的线性表,只允许在固定的一段进行插入和删除操作,进行插入和删除操作的一段称为栈顶,另一端称为栈底。 栈中的数据元素遵顼后进先出LIFO(Last In First Out)的原则,就像一…...
使用vhd虚拟磁盘安装两个win10系统
使用vhd虚拟磁盘安装两个win10系统 前言vhd虚拟磁盘技术简介准备工具开始动手实践1.winX选择磁盘管理2.选择“操作”--“创建VHD”3.自定义一个位置,输入虚拟磁盘大小4.右键初始化磁盘5.选择GPT分区表格式6.右键新建简单卷7.给卷起个名字,用于区分8.打开…...
代码随想录34 动态规划
1.经典问题: 背包问题 打家劫舍 斐波那契数列 爬楼梯问题 股票问题 2.dp数组以及下标的含义 3.递推公式 3.dp数组初始化 4.遍历顺序 5.打印数组 leetcode509.斐波那契数列 1.确定dp[i]含义 dp[i]第i个斐波那契数的值为dp[i] 2.递推公式:dp[…...
【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)
文章目录 【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)1. JDK介绍2. 下载 JDK3. 安装 JDK4. 配置环境变量5. 验证安装6. 创建并测试简单的 Java 程序6.1 创建 Java 程序:6.2 编译和运行程序:6.3 在显示或更改文件的…...
Shell特殊状态变量以及常用内置变量总结
目录 1. 特殊的状态变量 1.1 $?(上一个命令的退出状态) 1.2 $$(当前进程的 PID) 1.3 $!(后台进程的 PID) 1.4 $_(上一条命令的最后一个参数) 2.常用shell内置变量 2.1 echo&…...
【4Day创客实践入门教程】Day4 迈向高手之路——进一步学习!
Day4 迈向高手之路——进一步学习! 目录 Day4 迈向高手之路——进一步学习!更多的开发板外壳制作 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟Day4…...
EtherCAT-快速搭建
EtherCAT-快速搭建 快速简介 快速简介 EtherCAT现场总线协议是由德国倍福公司在2003年提出的,该通讯协议拓扑结构十分灵活,数据传输速度快,同步特性好,可以形成各种网络拓扑结构。倍福公司推出了自己的ASIC专用芯片有ET1100和ET1…...
【设计测试用例自动化测试性能测试 实战篇】
🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 设计测试用例…...
DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)的解决方法
在使用DBeaver连接MySQL数据库时,如果遇到“Access denied for user ip (using password: YES)”的错误提示,说明用户认证失败。此问题通常与数据库用户权限、配置错误或网络设置有关。本文将详细介绍解决此问题的步骤。 一、检查用户名和密码 首先&am…...
【MySQL — 数据库增删改查操作】深入解析MySQL的 Update 和 Delete 操作
1. 测试数据 mysql> select* from exam1; ----------------------------------------- | id | name | Chinese | Math | English | ----------------------------------------- | 1 | 唐三藏 | 67.0 | 98.0 | 56.0 | | 2 | 孙悟空 | 87.0 | 78.…...
04树 + 堆 + 优先队列 + 图(D1_树(D1_基本介绍))
目录 一、什么是树? 二、相关术语 根结点 边 叶子结点 兄弟结点 祖先结点 结点的大小 树的层 结点的深度 结点的高度 树的高度 斜树 一、什么是树? 树是一种类似于链表的数据结构,不过链表的结点是以线性方式简单地指向其后继结…...
【Proteus仿真】【51单片机】多功能计算器系统设计
目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、LCD1602液晶显示 2、矩阵按键 3、加减乘除,开方运算 4、带符号运算 5、最大 999*999 二、使用步骤 基于51单片机多功能计算器 包含:程序&…...
Solon Cloud Gateway 开发:Route 的配置与注册方式
路由的配置与注册有三种方式:手动配置;自动发现配置;代码注册。 1、手动配置方式 solon.cloud.gateway:routes: #!必选- id: demotarget: "http://localhost:8080" # 或 "lb://user-service"predicates: #?可选- &quo…...
jstat命令详解
jstat 用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。 命令的使用格式如下。 jstat [option] LVMID [interval] [count]各个参数详解: option:操作参数LVMID:本…...
[Collection与数据结构] B树与B+树
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
卡证检测矫正模型在嵌入式单片机上的应用探索
卡证检测矫正模型在嵌入式单片机上的应用探索 最近在做一个工业物联网的项目,需要给现场的设备加个证件核验功能。客户要求很简单:成本要低,部署要方便,最好能直接集成到现有的单片机系统里。一开始我们觉得这不可能——卡证检测…...
3个革新性视角:Tomato-Novel-Downloader的内容自由解决方案
3个革新性视角:Tomato-Novel-Downloader的内容自由解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 在数字阅读成为主流的今天,我们却常常陷入内…...
Cogito-V1-Preview-Llama-3B模型微调(Fine-tuning)数据准备入门教程
Cogito-V1-Preview-Llama-3B模型微调数据准备入门教程 你是不是也对那些能写代码、能聊天的AI模型感到好奇,甚至想自己动手,教一个模型学会你的专属技能?比如,让它帮你写特定风格的文案,或者理解你公司内部的业务文档…...
避开这些坑!微软云语音合成API从申请到调用的保姆级指南
微软云语音合成API实战:从零到落地的全流程避坑指南 第一次听到微软云的语音合成效果时,我正为一个智能客服项目焦头烂额。当时试用了市面上几乎所有主流方案,要么机械感明显,要么情感表达生硬。直到偶然点开微软的演示页面&#…...
Spring Boot + JPA实战:RBAC权限管理系统从零搭建(附完整代码)
Spring Boot与JPA深度整合:构建企业级RBAC权限系统的实战指南 在当今企业应用开发中,权限管理是保障系统安全的核心组件。基于角色的访问控制(RBAC)模型因其清晰的权限分配逻辑和灵活的可扩展性,成为大多数系统的首选方案。本文将带您从零开始…...
为什么 CFO 总在年底为固定资产失眠?一位 IT 运维的亲历复盘
上个月,我作为外部顾问,去一家年营收5亿的科技公司做系统健康检查。刚进机房,IT主管就苦笑:“我们的 ERP 里有 1200 台设备,但仓库扫码只扫出 780 台——剩下的,要么‘失踪’,要么重复录入了三次…...
uniapp复制文本的两种实现方式对比:从基础到进阶
Uniapp复制文本功能深度解析:从基础实现到跨平台适配 在移动应用和H5页面开发中,复制文本到剪贴板是一个看似简单却直接影响用户体验的基础功能。作为一款跨平台开发框架,Uniapp提供了多种实现方式,但每种方法都有其特定的适用场…...
AI头像生成器与SpringBoot集成实战:企业级应用开发指南
AI头像生成器与SpringBoot集成实战:企业级应用开发指南 你有没有想过,为什么现在很多电商平台的新用户注册后,头像都那么有个性,而且风格还挺统一?这背后其实不是设计师在加班加点,而是AI头像生成器在默默…...
如何一键备份你的QQ空间历史说说:GetQzonehistory完整指南
如何一键备份你的QQ空间历史说说:GetQzonehistory完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里的珍贵回忆会随着时间消失?那些承…...
构建高性能本地服务穿透通道:Rust异步网络隧道实践
构建高性能本地服务穿透通道:Rust异步网络隧道实践 【免费下载链接】tunnelto Expose your local web server to the internet with a public URL. 项目地址: https://gitcode.com/GitHub_Trending/tu/tunnelto 在分布式开发和远程协作日益普及的今天&#x…...
