LeetCode230218_148、654. 最大二叉树

news2024/12/27 4:11:52

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:

创建一个根节点,其值为 nums 中的最大值。
递归地在最大值 左边 的 子数组前缀上 构建左子树。
递归地在最大值 右边 的 子数组后缀上 构建右子树。
返回 nums 构建的 最大二叉树 。

示例 1:

图1 最大二叉树

输入:nums = [3,2,1,6,0,5]
输出:[6,3,5,null,2,0,null,null,1]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:从数组中找到最大元素的索引,不重建数组,用方法的两个参数定义左右边界。建立节点,节点左子节点,当前左边界,最大元素索引-1;节点右节点,最大元素索引+1, 当前右边界。左大于右,直接返回空。

class Solution {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        return build(nums, 0, nums.length - 1);
    }

    public TreeNode build(int[] nums, int left, int right) {
        if (left > right) return null;
        int max = getMax(nums, left, right);
        TreeNode node = new TreeNode(nums[max]);
        node.left = build(nums, left, max - 1);
        node.right =  build(nums, max + 1, right);
        return node;
    }

    public int getMax(int[] nums, int left, int right) {
        int max = left;
        for (int i = left + 1; i <= right; i++) {
            max = nums[max] > nums[i] ? max : i;
        }
        return max;
    }
}

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

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

相关文章

页面置换算法

页面置换算法 在进程运行过程中&#xff0c;若需要访问的物理块不在内存中&#xff0c;就需要通过一定的方式来将页面载入内存&#xff0c;而此时内存很可能已无空闲空间&#xff0c;因此就需要一定的算法来选择内存中要被置换的页面&#xff0c;这种算法就被称为页面置换算法…

redis容器部署及相关配置文件解释

背景&#xff1a;我们项目上的redis除了几个核心业务的集群部署是用二进制部署的&#xff0c;其他环境基本都是容器部署。所以整理了一下redis容器相关的配置。docker-compose部署的配置version: 3services:redis:image: redis:6.2.5container_name: redisrestart: alwaysports…

springmvc+jsp电影院购票售票选座推荐网站java ssm

本电影购票推荐网站以SSM作为框架&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;个人中心、用户管理、电影信息管理、电影类型管理、影院信息管理、系统管理、订单管理等模块&#xff0c;通过这些模块的实现能够基本满足日常电影购…

mysql 时区设置

方法一&#xff1a;修改 mysql 的配置文件永久设置时区&#xff08;优点&#xff1a;永久保存设置&#xff0c;缺点&#xff1a;需重启MySQL服务&#xff09;找到你MySQL的安装目录&#xff08;如果不记得安装在哪 可以输入show variables like “%char%”; 查看&#xff09;&a…

第四章SpringBoot之Web开发

文章目录SpringBoot Web开发总览要解决的问题SpringMVC自动配置原理Web开发静态资源处理第一种静态资源处理webjar第二种静态资源映射规则自定义静态资源路径首页处理内容协商视图解析器测试转换器和格式化器修改SpringBoot的默认配置原理分析全面接管SpringMVC关于国际化处理配…

Seata架构篇 - AT模式

AT 模式 概述 Seata AT 模式是一种非侵入式的分布式事务解决方案&#xff0c;Seata 在内部做了对数据库操作的代理层&#xff0c;我们使用 Seata AT 模式时&#xff0c;实际上用的是 Seata 自带的数据源代理 DataSourceProxy&#xff0c;Seata 在这层代理中加入了很多逻辑&am…

Koin入门1-快速上手

概念 Koin 是一款轻量级的依赖注入框架&#xff0c;它无代理&#xff0c;无代码生成&#xff0c;无反射 大家可以自行查阅官方英文教程&#xff1a;https://insert-koin.io/docs/quickstart/android-compose Koin 简单的来说可以包含以下四个模块&#xff1a; 名称作用entity实…

2|数据挖掘|聚类分析|无监督聚类PAM算法(中心法划分)|肠型分析

常见的六大聚类算法https://blog.csdn.net/m0_57656758/article/details/127653402?ops_request_misc%257B%2522request%255Fid%2522%253A%2522167669020916782425666238%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id167669020…

C++ STL——map和set的使用

文章目录1. 关联式容器1.1 键值对1.2 树形结构的关联式容器2. set2.1 set的介绍2.2 set的插入2.3 set的删除和查找2.4 lower_bound和upper_bound3. multiset3.1 count4. map4.1 map的介绍4.2 map的插入4.3 map的遍历4.4 map的[ ]5. multimap1. 关联式容器 我们之前学的vector、…

时序预测 | MATLAB实现CNN-SVM卷积支持向量机时间序列预测

时序预测 | MATLAB实现CNN-SVM卷积支持向量机时间序列预测 目录时序预测 | MATLAB实现CNN-SVM卷积支持向量机时间序列预测预测效果基本介绍研究回顾程序设计参考资料预测效果 基本介绍 CNN-SVM预测模型将深度学习模型作为特征学习器&#xff0c;将SVM 支持向量机 作为训练器进行…

基于分布鲁棒联合机会约束的能源和储备调度(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

2023.2.15工作学习记录 git Docker compose容器编排

关于Git错误提交了target目录 是因为在ignore目录中没有加入biz这个工程 以后提交代码时一定要检查好自己提交的代码 首先把所有的全部取消 然后再根据自己要提交的内容一个个来勾选 Docker网络 container模式&#xff1a;新建的容器和已经存在的一个容器共享一个网络…

【大数据】HADOOP-YARN容量调度器Spark作业实战

目录需求配置多队列的容量调度器验证队列资源需求 default 队列占总内存的40%&#xff0c;最大资源容量占总资源的60% ops 队列占总内存的60%&#xff0c;最大资源容量占总资源的80% 配置多队列的容量调度器 在yarn-site.xml里面配置使用容量调度器 <!-- 使用容量调度器…

从 ELMo 到 ChatGPT:历数 NLP 近 5 年必看大模型

目录AI21 LabsAlibabaAllen Institute for AIAmazonAnthropicBAAIBaiduBigScienceCohereDeepMindEleutherAIGoogleHuggingfaceiFLYTEKMetaMicrosoftNVidiaOpenAISalesforceTsinghua UniversityUC BerkeleyYandex持续更新中 ...参考团队博客: CSDN AI小组 先上 “万恶之源”&…

物联网在智慧农业中的应用

随看现代科技的不断发展&#xff0c;近年来我国农业的进步是显而易见的。从八九十年代农业生产以人力为主&#xff0c;到之后的机械渐渐代替人力&#xff0c;再到如今物联网技术在农业领域的应用&#xff0c;多种前沿技术应用于农业物联网&#xff0c;对智慧农业生产的各个环节…

阿里云_山东鼎信短信的使用(云市场)

目录山东鼎信API工具类随机验证码工具类进行测试Pom依赖(可以先导入依赖)创建controllerSmsServiceSmsServiceImplswagger测试(也可以使用postman)山东鼎信API工具类 山东鼎信短信官网 找到java的Api&#xff0c;复制下来 适当改了一下&#xff0c;为了调用(类名SmsUtils) p…

GEE学习笔记 七十二:【GEE之Python版教程六】命令行简介

这篇开始就要讲解GEE相关的内容&#xff0c;首先聊一下命令行的内容&#xff0c;这个在官方文档中有详细的介绍&#xff0c;这里我简单说一下常用的几个命令&#xff0c;剩余的大家在使用过程中如果又需要可以随时查看相关官方文档的介绍。官方文档地址&#xff1a;https://dev…

pcie link training

有机会用瑞芯微做EP&#xff0c;X86做RC &#xff0c;调试两者建立连接。环境配置如图所示&#xff0c;两块单板&#xff0c;期望瑞芯微做EP&#xff0c;X86做RC&#xff0c;两者能够互联。LINK 配置过程主要配置瑞芯微瑞芯微的芯片配置&#xff0c;在配置EP模式时&#xff0c;…

5.2 BGP水平分割

5.2.2实验2&#xff1a;BGP水平分割 1. 实验目的 熟悉BGP水平分割的应用场景掌握BGP水平分割的配置方法 2. 实验拓扑 实验拓扑如图5-2所示&#xff1a; 图5-2&#xff1a;BGP水平分割 3. 实验步骤 &#xff08;1&#xff09;配置IP地址 R1的配置 <Huawei>…

GEE学习笔记 七十五:【GEE之Python版教程九】数值

这章介绍一下数值类型&#xff0c;数值在python中可以分为&#xff1a;整型、浮点型、复数等&#xff0c;在GEE中我们常用的就是整形和浮点型数据。 这段代码是在程序之前必须执行的&#xff0c;用来注册GEE。 import ee ee.Initialize() 1、数值的API 首先看一下GEE的pytho…