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

(第34天)645、最大二叉树

目录

  • 645、最大二叉树
    • 题目描述
    • 思路
    • 代码

645、最大二叉树

题目描述

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

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

思路

常规思路

  1. 找到最大值和最大值的下标,根据这个值构建跟节点
  2. 根据最大值下标分割数组为左子数组、右子数组
  3. 根据左子数组递归的构造左子树、根据右子数组递归的构造右子树

代码实现思路

  1. 参数和返回值:传入数组;返回值为指向节点的指针。
  2. 终止条件:因为数组长度大于等于1,所以当数组长度为1时,做完相关操作之后返回结果。
  3. 递归逻辑:每次构造完根节点之后,按先序遍历顺序,先构造左子树、再构造右子树。

代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {// 数组长度>=1,所以直接创建新节点TreeNode* root = new TreeNode(0);// 终止条件:数组长度=1if (nums.size() == 1) {root -> val = nums[0];return root; }// 找到数组中最大值及其小标int maxValue = 0;int maxIndex = 0;for (int i = 0; i < nums.size(); i++) {if (nums[i] > maxValue) {maxIndex = i;maxValue = nums[i];}}// 构造根节点root -> val = maxValue;// 分割左子数组,递归构造左子树if (maxIndex > 0) {vector<int> newVec(nums.begin(), nums.begin() + maxIndex);root -> left = constructMaximumBinaryTree(newVec);}// 分割右子数组,递归构造右子树if (maxIndex < (nums.size() - 1)) {vector<int> newVec(nums.begin() + maxIndex + 1, nums.end());root -> right = constructMaximumBinaryTree(newVec);}return root;}
};

相关文章:

(第34天)645、最大二叉树

目录 645、最大二叉树题目描述思路代码 645、最大二叉树 题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大…...

Python知识点:如何使用Paramiko进行SSH连接与操作

使用Paramiko进行SSH连接与操作可以分为以下几个步骤&#xff1a; 安装Paramiko&#xff1a; 首先需要安装Paramiko库&#xff0c;可以使用pip进行安装&#xff1a; pip install paramiko建立SSH连接&#xff1a; 使用Paramiko连接远程服务器&#xff0c;需要提供服务器的地址、…...

代码随想录算法训练营第六天(一)|242.有效的字母异位词

LeetCode 242 有效的字母异位词 题目&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s "anagram&q…...

数据结构 | 考研代码题之顺序表 | 1 查找L中值为e的数据元素若找到则返回其下标,若找不到则返回-1

文章目录 1 题目2 题解 1 题目 假设有一个顺序表 L&#xff0c;其存储的所有数据元素均为不重复的正数&#xff0c;查找L中值为e的数据元素&#xff0c;若找到则返回其下标&#xff0c;若找不到则返回-1。 2 题解 C语言代码&#xff1a; /*假设有一个顺序表 L&#xff0c;其…...

RLVF:避免过度泛化地从口头反馈中学习

人工智能咨询培训老师叶梓 转载标明出处 大模型在不同行业和个人中的广泛应用要求模型能够根据具体的用户反馈进行调整或定制&#xff0c;以满足细微的要求和偏好。虽然通过高层次的口头反馈来指定模型调整非常方便&#xff0c;例如“在给老板起草电子邮件时不要使用表情符号”…...

设计原则与思想-从项目实战中学习设计模式

文章目录 开源项目通过剖析Java JDK源码学习灵活应用设计模式1. 单例模式(Singleton Pattern)示例:`java.lang.Runtime`2. 工厂模式(Factory Pattern)示例:`java.util.Date`3. 观察者模式(Observer Pattern)示例:`java.util.Observable` 和 `java.util.Observer`4. 适…...

python中的类属性、实例属性、类方法、实例方法和静态方法

1. 类属性(类变量)和实例属性(实例变量) 在python中&#xff0c;类中的属性就是定义在类中的变量&#xff0c;简称成员变量&#xff1b;类中的行为就是定义在类中的方法&#xff0c;简称成员方法。成员变量又可分为类变量和实例变量&#xff0c;或者分为类属性和实例属性。成员…...

A股继续底部震荡,探底是否能成功?

真心的给股民朋友提个醒&#xff0c;不管你胆大还是胆怯&#xff0c;盘面上出现了1个反常信号&#xff0c;一起来看看&#xff1a; 1、今天两市低开高走&#xff0c;开始筑底了&#xff0c;任何一个主力&#xff0c;都是在无人问津的熊市布局&#xff0c;而在人声鼎沸的牛市离场…...

NPDP考前怎么复习?NPDP200问PDF版来啦~

距离NPDP下半年考试还有4个月的时间&#xff0c;现在正是备考的黄金期。 以下复习建议~ 01.制定详细计划 首先&#xff0c;根据考试大纲&#xff0c;可以将内容划分为几个模块&#xff0c;如新产品开发流程、市场研究、产品规划等&#xff0c;并为每个模块设定学习目标和时间…...

ajax图书管理项目

bootstrap弹框 不离开当前页面&#xff0c;显示单独内容&#xff0c;让用户操作 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作步骤&#xff1a; 1.引入bootstrap.css和bootstrap.js …...

深入理解 Java SPI - 概念、原理、应用

零、前言 在当今互联网时代&#xff0c;应用程序越来越复杂&#xff0c;对于我们开发人员来说&#xff0c;如何实现高效的组件化和模块化已经成为了一个重要的问题。而 Java SPI&#xff08;Service Provider Interface&#xff09;机制&#xff0c;作为一种基于接口的服务发现…...

JavaScript - 判断数组中是否包含某个的元素的几种方式

目录​​​​​​​​​​​​​​ 1. 使用 includes 方法 2. 使用 indexOf 方法 3. 使用 find 方法 4. 使用 some 方法 5. 使用 filter 方法 6. 使用 every 方法​​​​​​​ 应该算是前端开发过程中比较常用的基本操作&#xff0c;话不多说&#xff0c;看代码。 1. 使…...

如何用AI颠覆企业未来:从大企业到中小型企业的实战攻略

如何用AI颠覆企业未来&#xff1a;从大企业到中小型企业的实战攻略 AI大佬经验分享&#xff1a;聊聊企业定制化AI需求和应用场景 今天想跟大家聊聊我在AI领域的一些经验和见解&#xff0c;希望能对大家有所启发。最近&#xff0c;不少企业都对AI很感兴趣&#xff0c;我也经常…...

Linux磁盘管理_LVM逻辑卷_SWAP交换分区_Centos-LVM格式磁盘扩容

目录 一、基本磁盘管理1.1 创建分区1.2 创建文件系统1.3 挂载mount1.4 查看挂载信息1.5 重启失效解决方式 二、逻辑卷LVM2.1 LVM2.2 创建LVM2.3 扩大卷组VG2.4 命令汇总 三、交换分区SWAP管理3.1 SWAP3.2 查看swap3.3 增加交换分区 四、Centos调整分区&#xff0c;在线调整分区…...

C++ 函数模板和类模板

参考视频&#xff1a;C类模板_哔哩哔哩_bilibili 遗留问题&#xff1a;编译器怎么处理函数模板和类模板 目录 一、为什么会有函数模版&#xff1f;函数模板是为了解决什么问题&#xff1f; 二、函数模板的概念 三、函数模版的使用 四、函数模板的特化 五、类模板的概念 …...

安卓Termux系统设备安装内网穿透工具实现远程使用SFTP传输文件

文章目录 前言1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 前言 本教程主要介绍如何在安卓 Termux 系统中使用 SFTP 文件传输&#xff0c;并结合cpolar内网穿透工具生成公网地址&#xff0c;轻松实现无公网IP环境远程传输&#xf…...

文件属性获取

1、getpwuid函数 #include <stdio.h> #include <sys/types.h> #include <pwd.h> int main(int argc, char *argv[]) {uid_t uid 1000;struct passwd * pw getpwuid(uid);printf("name:%s gid:%d info:%s wd:%s shell:%s\n",pw->pw_name,pw-&g…...

C:冒泡排序

1、冒泡排序介绍&#xff1a; 冒泡排序的核心思想就是&#xff1a;两两相邻的元素进行比较。 先用一个例子来帮助大家理解一下冒泡排序的算法是怎们进行的 有一排高矮不同的人站成一列&#xff0c;要按照从矮到高的顺序重新排队。 冒泡排序的方法就是&#xff0c;从第一个人…...

探秘C# LINQ元素运算:原理阐释与实践指南

文章目录 一、LINQ元素运算符概述二. ElementAt 和 ElementAtOrDefault三. First 和 FirstOrDefault四. Last 和 LastOrDefault五. Single 和 SingleOrDefault六. Where 和 Select七、实际应用场景示例总结 LINQ&#xff08;Language-Integrated Query&#xff09;是C#中强大且…...

根据bean的名称获取bean,静态方法查询数据库

根据bean名称获取bean 1.先创建bean&#xff0c;如template package com.test.game.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate;import…...

软件更新机制的测试要点与稳定性提升

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

「数据分析 - NumPy 函数与方法全集」【数据分析全栈攻略:爬虫+处理+可视化+报告】

- 第 104 篇 - Date: 2025 - 06 - 05 Author: 郑龙浩/仟墨 NumPy 函数与方法全集 文章目录 NumPy 函数与方法全集1. 数组创建与初始化基础创建序列生成特殊数组 2. 数组操作形状操作合并与分割 3. 数学运算基础运算统计运算 4. 随机数生成基础随机分布函数 5. 文件IO文件读写 …...

基于Scala实现Flink的三种基本时间窗口操作

目录 代码结构 代码解析 (1) 主程序入口 (2) 窗口联结&#xff08;Window Join&#xff09; (3) 间隔联结&#xff08;Interval Join&#xff09; (4) 窗口同组联结&#xff08;CoGroup&#xff09; (5) 执行任务 代码优化 (1) 时间戳分配 (2) 窗口大小 (3) 输出格式…...

[P2P]并发模式

设备可以同时作为 P2P Client 监听其他P2P请求&#xff0c;需要硬件和驱动支持。 //某些高级Wi-Fi芯片&#xff08;如高通、博通&#xff09;支持 Concurrent Mode&#xff08;并发模式 GO 如果GO已经有一个client&#xff0c;大多数支持接受新的P2P Discovery。默认情况下会…...

iOS 门店营收表格功能的实现

iOS 门店营收表格功能实现方案 核心功能需求 数据展示&#xff1a;表格形式展示门店/日期维度的营收数据排序功能&#xff1a;支持按营收金额、增长率等排序筛选功能&#xff1a;按日期范围/门店/区域筛选交互操作&#xff1a;点击查看详情、数据刷新数据可视化&#xff1a;关…...

怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗

有时候咱们cesium加载模型时候型太黑&#xff0c;程序崩溃&#xff0c;不显示&#xff0c;位置不对模型太大怎么办 需要处理 可以联系Q:424081801 谢谢 需要处理 可以联系Q:424081801 谢谢...

Redis线程安全深度解析:单线程模型的并发智慧

Redis线程安全深度解析&#xff1a;单线程模型的并发智慧 引言&#xff1a;Redis的线程模型迷思 “Redis是单线程的”——这个广为流传的说法既正确又不完全正确。Redis的线程安全机制实际上是一套精心设计的并发控制体系&#xff0c;它既保持了单线程的简单性&#xff0c;又…...

手写muduo网络库(一):项目构建和时间戳、日志库

引言 本文作为手写 muduo 网络库系列开篇&#xff0c;聚焦项目基础框架搭建与核心基础工具模块设计。通过解析 CMake 工程结构设计、目录规划原则&#xff0c;结合时间戳与日志系统的架构&#xff0c;为后续网络库开发奠定工程化基础。文中附完整 CMake 配置示例及模块代码。 …...

创客匠人:如何通过精准定位实现创始人IP打造与知识变现

在当今知识经济时代&#xff0c;越来越多的专业人士希望通过个人品牌实现知识变现&#xff0c;但许多人面临一个共同困境&#xff1a;明明很努力&#xff0c;却收效甚微。创客匠人作为深耕知识付费赛道9年的专业机构&#xff0c;揭示了这一现象背后的关键原因——90%的IP失败源…...

行为设计模式之Command (命令)

行为设计模式之Command &#xff08;命令&#xff09; 前言&#xff1a; 需要发出请求的对象&#xff08;调用者&#xff09;和接收并执行请求的对象&#xff08;执行者&#xff09;之间没有直接依赖关系时。比如遥控器 每个按钮绑定一个command对象&#xff0c;这个Command对…...