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

力扣654 最大二叉树 java实现

654. 最大二叉树

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

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

返回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中的所有整数互不相同

根据题目描述,我们很容易会想到通过递归的方式对本题进行解答。因为无论是拆分出来左子数组还是右子数组,那么对于子数组的操作,依然都是一样的逻辑。算是分冶的思想。因此使用递归就比较简单。只需要构建当前最大值即可,然后将左右侧的数组继续递归。

以下为java实现代码。

public static void main(String[] args) { int[] nums = {3,2,1,6,0,5}; System.out.println(constructMaximumBinaryTree(nums)); } public static TreeNode constructMaximumBinaryTree(int[] nums){ if (nums.length == 0){ return null; } int max = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] > nums[max]){ max = i; } } TreeNode res = new TreeNode(nums[max]); int[] left = Arrays.copyOfRange(nums, 0, max); int[] right = Arrays.copyOfRange(nums, max + 1, nums.length); res.left = constructMaximumBinaryTree(left); res.right = constructMaximumBinaryTree(right); return res; }

以上为记录分享用,代码较差请见谅。

http://www.cnnetsun.cn/news/21297.html

相关文章:

  • 语音识别技术在教育场景的应用实践与工具选型探索
  • 三步搞定verl:RLHF训练环境快速部署手册
  • 好写作AI:复杂算法的“金牌翻译”,让你论文的引言不再“不说人话”
  • 好写作AI:当枯燥的统计表格,遇上会讲故事的AI“翻译官”
  • 重磅︱数字孪生风洞「风神NF3」发布!
  • 审计场景中录音转文字工具的技术实现与选型指南
  • Livewire完整入门指南:5分钟掌握Laravel动态界面开发
  • Origami Simulator实战指南:从零开始掌握数字折纸艺术
  • 波浪带鱼理论:过滤无效信号,提升投资收益的法宝
  • Step1X-Edit v1.2发布:推理编辑能力跃升,重新定义AI图像创作标准
  • BlenderMCP像素艺术转换终极指南:从3D模型到复古游戏资产的快速上手
  • OpenMower机器人割草机固件测试实战指南
  • 23、深入解析Kubernetes集群扩展与高级网络
  • Many Notes:打造高效云端笔记的终极解决方案
  • 【网络安全】渗透测试零基础入门之什么是文件包含漏洞?一文带你讲清其中的原理!
  • TypeScript:现代前端开发的类型约束者
  • 专业字体文件转换完全指南:ttctools使用详解
  • Descript Audio Codec:终极音频压缩解决方案,90倍压缩率重塑音质体验
  • 利用 DeepSeek 提升工作效率
  • Webhook.site终极选择指南:自部署与云端方案深度解析
  • PHPBrew自定义任务终极指南:扩展开发与实战技巧
  • 如何优雅重构HP-Socket应用:Deno 2.0兼容性深度解析与迁移策略
  • 老旧Mac升级终极指南:完整教程解锁macOS兼容新世界
  • 联想显卡散热风扇更换教程查找全攻略:从官方指引到社区经验
  • springboot基于vue的管网隐患安全巡检系统_i2g600ga
  • next-scene LoRA实战指南:3步实现电影级分镜AI生成
  • 传统算法之Canny亚像素边缘检测及将离散边缘点链接成线条的优化和探讨。
  • Autoware卡尔曼滤波技术:让自动驾驶感知系统更精准可靠
  • 优化算法matlab实现(一)相关matlab基础
  • 降本增效利器!腾讯云云服务器成本优势全解析