刷代码随想录有感(52):用数组最大值及其两侧构造最大二叉树

devtools/2024/10/18 8:32:52/

题干:

代码:

class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {if(nums.size() == 1)return new TreeNode(nums[0]);int maxvalue = INT_MIN;int maxindex;for(int i = 0; i < nums.size(); i++){if(nums[i] > maxvalue){maxindex = i;maxvalue = nums[i];}}TreeNode* node = new TreeNode(maxvalue);if(maxindex > 0){vector<int> leftvec(nums.begin(), nums.begin() + maxindex);node -> left = constructMaximumBinaryTree(leftvec);}if(maxindex < nums.size() - 1){vector<int> rightvec(nums.begin() + maxindex + 1, nums.end());node -> right = constructMaximumBinaryTree(rightvec);}return node;}
};

要点:①两个if判断来构造左右子树,maxindex > 0 说明左侧数组长度大于等于1,maxindex < nums.size() - 1 说明右侧数组长度大于等于1。所以能成功构造。

②用迭代器构造数组,比如构造从nums开头到nums[3]的数组就用vector<int> newvec(nums.begin(), nums.begin() + 3); 从nums[3]再到nums末尾就是vector<int> newvec(nums.begin() + 3, nums.end())。总之构造的两侧区间都必须要有begin与end的存在。

③if分支下分别递归调用生成左右子树。


http://www.ppmy.cn/devtools/28598.html

相关文章

Pandas数据可视化 - Matplotlib、Seaborn、Pandas Plot、Plotly

可视化工具介绍 让我们一起探讨Matplotlib、Seaborn、Pandas Plot和Plotly这四个数据可视化库的优缺点以及各自的适用场景。这有助于你根据不同的需求选择合适的工具。 1. Matplotlib 优点: 功能强大&#xff1a;几乎可以用于绘制任何静态、动画和交互式图表。高度可定制&a…

分布式与一致性协议之Raft算法与一致哈希算法(一)

Raft算法 Raft与一致性 有很多人把Raft算法当成一致性算法&#xff0c;其实它不是一致性算法而是共识算法&#xff0c;是一个Multi-Paxos算法&#xff0c;实现的是如何就一系列值达成共识。并且&#xff0c;Raft算法能容忍少数节点的故障。虽然Raft算法能实现强一致性&#x…

Swift - 可选项(Optional)

文章目录 Swift - 可选项&#xff08;Optional&#xff09;1. 可选项&#xff08;Optional&#xff09;2. 强制解包&#xff08;Forced Unwrapping&#xff09;3. 判断可选项是否包含值4. 可选项绑定&#xff08;Optional Binding&#xff09;5. 等价写法6. while循环中使用可选…

LabVIEW飞机机电系统综合测试平台

LabVIEW飞机机电系统综合测试平台 在现代航空领域&#xff0c;机电系统的准确性与可靠性对飞行安全至关重要。针对飞机机电管理计算机&#xff08;UMC&#xff09;复杂度增加、测试覆盖率低、效率不高等问题&#xff0c;开发了一套基于LabVIEW的机电系统综合测试平台。平台通过…

推动数字化智变发展 锐捷网络保持行业领先

今天,数字经济迈入高质量发展新阶段,已成为世界经济竞争格局的战略高地。云、AI、5G等新技术与产业深度融合的“数智时代”下,网络基础设施至关重要。作为行业领先的网络基础设施及解决方案提供商,锐捷网络(301165)在持续发展中推动数字化智变。 行业领先 行稳致远 自成立以来…

数据结构与算法-基于回溯的全排列问题

全排列问题 回溯解决全排列问题 [1,2,3];穷举&#xff0c;全排列问题 每次选择一个数子&#xff0c;利用selected记录已选择的 首先通过循环去遍历每个可能的选择&#xff0c;选择一个数字后&#xff0c;记录选择&#xff0c;递归进行下一次选择 #nums:给定的数组,selected&a…

kerberos-hive-dbeaver问题总结

一、kerberos安装windows客户端 1、官方下载地址 http://web.mit.edu/kerberos/dist/ 2、环境变量配置 下载msi安装包&#xff0c;无需重启计算机&#xff0c;调整环境变量在jdk的前面&#xff0c;尽量靠前&#xff0c;因为jdk也带了kinit、klist等命令 C:\Program Files\…

是机遇?是未来?拥抱 AI Agent ,拥抱 AI 2.0时代~

✍️ 作者&#xff1a;哈哥撩编程&#xff08;视频号同名&#xff09; 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5; 程序员&#xff1a;职场关键角色通识宝…