当前位置: 首页 > news >正文

二叉树——最大二叉树

最大二叉树

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

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

示例 1:
在这里插入图片描述

输入:nums = [3,2,1,6,0,5]
输出:[6,3,5,null,2,0,null,null,1]
解释:递归调用如下所示:

  • [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5] 。
    • [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1] 。
      • 空数组,无子节点。
      • [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1] 。
        • 空数组,无子节点。
        • 只有一个元素,所以子节点是一个值为 1 的节点。
    • [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 [] 。
      • 只有一个元素,所以子节点是一个值为 0 的节点。
      • 空数组,无子节点。
        示例 2:
        在这里插入图片描述

输入:nums = [3,2,1]
输出:[3,null,2,null,1]
提示:

1 <= nums.length <= 1000
0 <= nums[i] <= 1000
nums 中的所有整数 互不相同

思路

  • 返回值,参数
    返回值——构建树,返回节点
    参数——数组
    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
  • 终止条件
    1 <= nums.length <= 1000,数组不为空
    当数组为1时,说明到叶子节点了
  • 单次递归
  1. 找最大值和最大值位置,节点赋值
        int max=0;int maxIndex=0;for(int i=0;i<nums.size();i++){if(nums[i]>max){max=nums[i];maxIndex=i;}}       node->val=max;
  1. 左数组,右数组
        vector<int> leftnums(nums.begin(),nums.begin()+maxIndex);vector<int> rightnums(nums.begin()+maxIndex+1,nums.end());

+1 把最大值删除,不然死循环,爆内存

  1. 构建左子树,右子树
        if(leftnums.size()>0)node->left=constructMaximumBinaryTree(leftnums);if(rightnums.size()>0) node->right=constructMaximumBinaryTree(rightnums);

代码

class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {TreeNode* node=new TreeNode(0);if(nums.size()==1){node->val=nums[0];return node;}int max=0;int maxIndex=0;for(int i=0;i<nums.size();i++){if(nums[i]>max){max=nums[i];maxIndex=i;}}node->val=max;vector<int> leftnums(nums.begin(),nums.begin()+maxIndex);vector<int> rightnums(nums.begin()+maxIndex+1,nums.end());if(leftnums.size()>0)node->left=constructMaximumBinaryTree(leftnums);if(rightnums.size()>0) node->right=constructMaximumBinaryTree(rightnums);return node;}
};

问题

划分左数组,右数组,没有加一,把最大值删除,死循环,爆内存

        vector<int> leftnums(nums.begin(),nums.begin()+maxIndex);vector<int> rightnums(nums.begin()+maxIndex+1,nums.end());

相关文章:

二叉树——最大二叉树

最大二叉树 链接 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums…...

【Redis】Redis 的过期策略以及内存淘汰机制详解

Redis 的过期策略以及内存淘汰机制详解1. Redis 的过期策略1.1 如何设置 key 的过期时间&#xff1f;1.2 key 设置且到了过期时间后&#xff0c;该 key 保存的数据还占据内存么&#xff1f;1.3 Redis 如何删除过期的数据1.3.1 定期删除1.3.2 惰性删除2. Redis 的内存淘汰机制2.…...

边缘云是什么?

涂鸦边缘云服务 旨在解决物联网边缘位置的连接需求和提高设备自主管理能力。并与涂鸦 IoT 云服务和 IoT 终端形成云边端三位一体的端到端产品架构。使用涂鸦边缘云&#xff0c;能极大降低设备响应延时、降低网络带宽压力、提高算力分发能力&#xff0c;并构建以下技术优势&…...

Java常用数据结构

Java常用数据结构 Java中有几种常用的数据结构&#xff0c;主要分为Collection和map两个主要接口&#xff08;接口只提供方法&#xff0c;并不提供实现&#xff09;&#xff0c;而程序中最终使用的数据结构是继承自这些接口的数据结构类。 一、几个常用类的区别 1&#xff0e…...

【Java基础 下】 026 -- 集合进阶(不可变集合、Stream流、方法引用)

目录 一、不可变集合 1、创建不可变集合的应用场景 2、创建不可变集合的书写格式 ①、不可变的List集合 ②、不可变的Set集合 ③、不可变的Map集合 3、小结 二、Stream流 1、体验Stream流的作用 2、Stream流的思想 3、Stream流的使用步骤 ①、单列集合获取Stream流 ②、双列集合…...

SAP 跨工厂或特定工厂的物料状态设置

在物料主数据的Basic data 1 View和MRP1 View可分别设置“跨工厂物料状态(X-plant matl status)”和“特定工厂的物料状态(Plant-sp.matl status)”。 通过对物料状态的设置&#xff0c;可实现对物料使用范围的限制。 例&#xff1a;在采购中不可用&#xff1b;在库存管理中不…...

jupyter的安装步骤

1.安装python文件 首先去官网python去下载python的安装包&#xff0c;点击donwload,选择合适的系统。这里我是windown系统&#xff0c;点击进去&#xff0c;如图找到有installer的去下载。不建议下载最新版本的&#xff0c;会有兼容问题。 2.安装python 点击第二个选项是自己配…...

Optional使用详解

Optional使用详解 文章目录Optional使用详解1.构造函数2.Optional.of(T value)作用使用源码&#xff08;只想知道怎么用的可以略过&#xff09;Optional.ofNullable(T value)作用使用源码.orElse(T other)作用使用源码.orElseGet(Supplier<? extends T> other)作用使用源…...

如何实现文件高速传输,推荐镭速高速文件传输解决方案

随着互联网的发展&#xff0c;文件传输越来越频繁&#xff0c;如何实现文件高速传输已经越来越成为企业发展过程中需要解决的问题&#xff0c; 在当今的业务中&#xff0c;随着与客户和供应商以及内部系统的所有通信的数据量不断增加&#xff0c;对高速文件传输解决方案的需求…...

SpringBoot整合Mybatis+人大金仓(kingbase8)

陈老老老板&#x1f9b8;&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;国产数据库-人大金仓&#xff08;kingbase8&#xff09;&#xff08;主要讲一些人大金仓数据库相关的内容&#xff09;&#x1f468;‍&#x1f4bb;本文简述&#xff1a;本文讲一下Mybatis框架整合人…...

TPM 2.0实例探索2 —— LUKS磁盘加密(3)

接前文&#xff1a;TPM 2.0实例探索2 —— LUKS磁盘加密&#xff08;2&#xff09; 本文大部分内容参考&#xff1a; Code Sample: Protecting secret data and keys using Intel Platform... 二、LUKS磁盘加密实例 3. 将密码存储于TPM的LUKS 由于自动挂载需要在运行时提供一…...

嵌入式Debian主机可接HDMI显示

1、ARM是何物 ARM是一种体系架构。它使用 32 位处理器核心&#xff0c;采用 RISC&#xff08;Reduced Instruction Set Computer&#xff0c;精简指令集计算机&#xff09;架构&#xff0c;核心的运算效率高&#xff0c;占用空间小&#xff0c;功耗低&#xff0c;应用于便携式…...

驱动程序开发:基于ICM20608六轴传感器 --- 使用Regmap API 的 SPI 读取数据 之 IIO驱动

目录一、IIO 子系统简介二、IIO子系统使用的一些相关的结构体、函数等1、iio_dev 结构体  ①modes&#xff1a;是选择iio驱动设备支持的工作模式&#xff0c;模式分别有如下&#xff1a;  ②dev&#xff1a;其是一个设备结构体。  ②channels&#xff1a;为 IIO 设备通道…...

专利撰写 为什么要申请专利 申请专利对个人有什么利益关系 专利申请实例 如何申请专利 专利申请办理流程

专利撰写 专利是对发明者或创造者所创造的发明或设计提供一定期限的独占权的法律保护。撰写专利需要考虑到多方面的因素&#xff0c;包括发明或设计的技术性、可行性、独创性、保密性等等。以下是一些关于专利撰写的常见问题和注意事项&#xff1a;专利类型&#xff1a;专利包括…...

yolov5/6/7系列模型训练日志结果数据对比分析可视化

早在之前使用yolov3和yolov4这类项目的时候可视化分析大都是自己去做的&#xff0c;到了yolov5的时候&#xff0c;变成了一个工具包了&#xff0c;作者全部集成进去了&#xff0c;这里我们以一个具体的结果为例&#xff0c;如下&#xff1a;整个训练过程产生的指标等数据都会自…...

ppppp2-23

#!/bin/sh USBFILE/etc/ppp/usbdevices LIST/etc/ppp/diallist function ec25_find_ttyname() { DEVNAME$1 FLAG0 USB_FIND_PATH/sys/bus/usb/devices for dir in $(ls $USB_FIND_PATH) do echo $(ls USBFINDPATH/USB_FIND_PATH/USBF​INDP​ATH/dir) | grep ttyUSB > /dev…...

【GeoDjango框架解析——读取矢量数据写入postgis数据库】

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 geodjango框架解析之读取矢量数据shp文件写入postgis数据库 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录…...

注意啦!如何通过广告吸引客户直接下单?

2023年跨境电商越来越突出&#xff0c;据业内相关人士称&#xff0c;在未来几年与跨境电商相关的政策仍会继续倾斜甚至加大力度&#xff0c;因此各行各业都响应政策&#xff0c;在新政策落实之前致力于平台的转型升级&#xff0c;做新时代创新型的高质量发展&#xff0c;其实细…...

ThinkPHP ^6图片操作进阶

图片裁剪、缩略、水印不再是TP框架系统内置的功能&#xff0c;需要安装。 目录 安装 图片处理 1.创建图片对象 2.获取图片属性 3.裁剪图像 4.生成缩略图 6.保存图像 7.水印 安装 使用composer在项目根目录打开命令行执行&#xff1a; composer require topthink/think…...

深入理解JS作用域链与执行上下文

变量提升&#xff1a; 变量提升&#xff08; hoisting &#xff09;。 我可恨的 var 关键字&#xff1a; 你读完下面内容就会明白标题的含义&#xff0c;先来一段超级简单的代码&#xff1a; <script type"text/javascript">var str Hello JavaScript hoi…...

科研不秃头!谁还不知道这个零代码生信神器

各位深陷生信泥潭的科研宝子们&#xff0c;集合啦&#xff01;&#x1f4e2;你是否也经历过这样的绝望&#xff1a;❌ 导师甩来一组单细胞数据&#xff0c;你却连 Linux 怎么登录都不知道&#xff1f;❌ 好不容易装好了 R 语言&#xff0c;结果包版本冲突报错到怀疑人生&#x…...

Java集成LibreOffice实现高效Office文档批量转PDF方案

1. 为什么选择LibreOffice进行文档转换 在企业日常办公中&#xff0c;我们经常需要处理大量的Office文档。想象一下这样的场景&#xff1a;财务部门每月要生成上百份报表&#xff0c;人力资源部门要处理大量简历&#xff0c;而市场部门则需要频繁修改和分享各种方案文档。这些文…...

OpenClaw自动化周报:Qwen3.5-9B-AWQ-4bit整合截图生成工作总结

OpenClaw自动化周报&#xff1a;Qwen3.5-9B-AWQ-4bit整合截图生成工作总结 1. 为什么需要自动化周报 每周五下午&#xff0c;我的电脑屏幕总会同时开着十几个窗口&#xff1a;项目管理系统截图、代码提交记录、会议纪要文档、临时笔记文件……把这些碎片信息整理成结构化周报…...

老旧电脑焕新生:OpenClaw+Qwen3-4B低资源占用优化方案

老旧电脑焕新生&#xff1a;OpenClawQwen3-4B低资源占用优化方案 1. 为什么需要低资源优化方案 去年我翻出一台2015款的MacBook Air&#xff0c;4GB内存的配置在当下连开几个Chrome标签页都吃力。但作为技术爱好者&#xff0c;我总想让它发挥余热。当我尝试在这台设备上运行O…...

基于 LangGraph 的 Agentic RAG 核心架构

核心摘要&#xff1a;当资深运维专家离场&#xff0c;留下的往往不仅是空荡荡的工位&#xff0c;更是无数无法被Wiki捕捉的“隐性知识”。本文将摒弃空洞的概念炒作&#xff0c;基于 Agentic RAG 架构&#xff0c;利用 LangGraph 与 Qwen2.5&#xff0c;从零构建一个具备“反思…...

从Logistic曲线到疫情预测:用Python和SciPy复现SI传染病模型(附代码)

从Logistic曲线到疫情预测&#xff1a;用Python和SciPy复现SI传染病模型&#xff08;附代码&#xff09; 最近在整理疫情数据时&#xff0c;我发现一个有趣的现象&#xff1a;很多地区的感染人数增长曲线都呈现出典型的S型特征。这让我想起了经典的SI传染病模型&#xff0c;它用…...

智能应急灯V16:多场景照明解决方案

目录 一、方案概述 二、硬件方案设计 2.1 硬件整体架构 2.2 核心模块选型与设计 2.2.1 主控模块&#xff08;核心单元&#xff09; 2.2.2 电源管理模块&#xff08;供电核心&#xff09; 2.2.3 照明驱动模块 2.2.4 状态监测模块 2.2.5 通信模块&#xff08;可选&#…...

PINN 融合机器学习重构科学计算范式,物理先验赋能神经网络高效求解偏微分方程

PINN 即物理信息神经网络&#xff0c;将物理定律&#xff08;如偏微分方程、边界条件&#xff09;以约束损失形式嵌入机器学习框架&#xff0c;实现数据驱动与物理先验的融合。它依托神经网络的拟合能力&#xff0c;在训练中同时最小化观测数据误差与物理方程残差&#xff0c;无…...

Linux内核中的中断处理优化:从顶半部到底半部

Linux内核中的中断处理优化&#xff1a;从顶半部到底半部 作为一名深耕操作系统和嵌入式开发的工程师&#xff0c;我对Linux内核中的中断处理机制有着深入的理解。中断处理是操作系统的核心功能之一&#xff0c;它的性能直接影响系统的响应能力。 中断处理的挑战 中断处理面临以…...

从商业目标到技术实现:通用系统设计的四层逻辑框架

文章目录1. 商业目标&#xff08;Business Goals&#xff09;2. 业务逻辑&#xff08;Business Logic&#xff09;3. 应用逻辑&#xff08;Application Logic&#xff09;4. 技术架构&#xff08;Technical Architecture&#xff09;5. 四层逻辑的流动与反馈参考资料在构建任何…...