信阳电子商务网站建设软件开发公司经营范围
2026/1/1 3:09:00 网站建设 项目流程
信阳电子商务网站建设,软件开发公司经营范围,百度联盟 网站备案信息,百度业务范围654. 最大二叉树给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的…654. 最大二叉树给定一个不重复的整数数组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 10000 nums[i] 1000nums中的所有整数互不相同根据题目描述我们很容易会想到通过递归的方式对本题进行解答。因为无论是拆分出来左子数组还是右子数组那么对于子数组的操作依然都是一样的逻辑。算是分冶的思想。因此使用递归就比较简单。只需要构建当前最大值即可然后将左右侧的数组继续递归。以下为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; }以上为记录分享用代码较差请见谅。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询