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

LeetCode654:最大二叉树

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

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

在这里插入图片描述
代码

自己的方法

class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {if (nums.size() == 0) return nullptr;auto rootValue = max_element(nums.begin(), nums.end());TreeNode* root = new TreeNode(*rootValue);if (rootValue - nums.begin() > 0) {vector<int> nums2(nums.begin(),rootValue);root->left = constructMaximumBinaryTree(nums2);}if (nums.end() - rootValue > 0) {vector<int> nums2(rootValue+1,nums.end());root->right=constructMaximumBinaryTree(nums2);}return root;}
};

改进的方法

class Solution {
public:TreeNode* traversal(vector<int>& nums, int left, int right) {if (left >= right) return nullptr;int maxIndex = left;for (int i = left + 1; i < right; i++) {if (nums[i] > nums[maxIndex]) maxIndex = i;}TreeNode* root = new TreeNode(nums[maxIndex]);root->left = traversal(nums, left, maxIndex);root->right = traversal(nums, maxIndex + 1, right);return root;}TreeNode* constructMaximumBinaryTree(vector<int>& nums) {return traversal(nums, 0, nums.size());}
};
http://www.lryc.cn/news/336793.html

相关文章:

  • AI禁区徘徊监测识别摄像机
  • 【学习】什么是信创适配性测试?信创适配性测试的重要性有哪些?
  • linux 配置服务开机启动
  • React中State管理的4 个关键解决方案
  • Testng测试框架(6)--@Factory动态地创建测试类的实例
  • Kubernetes(K8s)运维实战:案例解析与代码实践
  • nginx反向代理配置详解
  • 【LeetCode】单调栈类题目详解
  • Python上解决TypeError: not all arguments converted during string formatting错误
  • ASUS华硕ROG幻16Air笔记本电脑GU605M原装出厂Win11系统工厂包下载,带有ASUSRecovery一键重置还原
  • 【OpenVINO™】使用 OpenVINO™ C# API 部署 YOLOv9 目标检测和实例分割模型(上篇)
  • 代码随想录——二分查找(一)
  • 【NLP】多标签分类【下】
  • HWOD:密码强度等级
  • 期货学习笔记-MACD指标学习2
  • 5G智慧港口简介(一)
  • 订单中台架构:打造高效订单管理系统的关键
  • 【算法】模拟
  • 电力综合自动化系统对电力储能技术的影响有哪些?
  • Compose UI 之 Card 卡片组件
  • ELK日志
  • WPF Pack
  • 计算两个时间段的差值
  • Element Plus 表单校验
  • java实现TCP交互
  • 学习云计算HCIE选择誉天有什么优势?
  • python之文件操作与管理
  • 大厂Java笔试题之对完全数的处理
  • 【Redis深度解析】揭秘Cluster(集群):原理、机制与实战优化
  • 【JAVA基础篇教学】第六篇:Java异常处理