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

每日算法题

654题

class Solution { public: TreeNode* constructMaximumBinaryTree(vector<int>& nums) { //找最大值和最大值的下标作为根 TreeNode*node=new TreeNode(0); if(nums.size()==1) { node->val=nums[0]; return node; //终止条件 } //找到最大值 int maxvalue=0; int maxvalueindex=0; for(int i=0;i<nums.size();i++) { if(nums[i]>maxvalue) { maxvalue=nums[i]; maxvalueindex=i;//下标 } } node->val=maxvalue;//根节点 //左子树 if(maxvalueindex>0) { vector<int> newVec(nums.begin(),nums.begin()+maxvalueindex); node->left=constructMaximumBinaryTree(newVec); } if(maxvalueindex<(nums.size()-1)) { vector<int> newVec(nums.begin()+maxvalueindex+1,nums.end()); node->right=constructMaximumBinaryTree(newVec); } return node; } };

目标是找最大值,然后当根节点,

思路:找最大值和最大值的下标,切割左右子树,就这样接着遍历,

但是开数组造成空间效率低,所以给另一种简洁代码

class Solution { private: // 在左闭右开区间[left, right),构造二叉树 TreeNode* traversal(vector<int>& nums, int left, int right) { if (left >= right) return nullptr; // 分割点下标:maxValueIndex int maxValueIndex = left; for (int i = left + 1; i < right; ++i) { if (nums[i] > nums[maxValueIndex]) maxValueIndex = i; } TreeNode* root = new TreeNode(nums[maxValueIndex]); // 左闭右开:[left, maxValueIndex) root->left = traversal(nums, left, maxValueIndex); // 左闭右开:[maxValueIndex + 1, right) root->right = traversal(nums, maxValueIndex + 1, right); return root; } public: TreeNode* constructMaximumBinaryTree(vector<int>& nums) { return traversal(nums, 0, nums.size()); } };

这个也是进行切割,不过利用传值切割代替开数组,效率高

http://www.jsqmd.com/news/817923/

相关文章:

  • 2026兴义市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 免费一键去图片水印的App有哪些?2026年水印去除工具排行与推荐 - 科技热点发布
  • 树莓派相机3D打印支架:低成本打造专业级三脚架与外壳方案
  • RA MCU与Zephyr RTOS:软硬一体构建高效嵌入式物联网开发平台
  • CircuitPython嵌入式开发实战:内存管理、.mpy文件与文件系统故障排查
  • 科研绘图内卷破局:零代码做期刊级图表,虎贲等考 AI 让论文直接加分
  • 2026长沙市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 图片视频怎样去水印不破坏原图?2026年最全去水印工具推荐与方法指南 - 科技热点发布
  • LangChain 第二课
  • VAD与VAD_SILEROVAD高效初始化:core.utils.modules_initialize深度优化实践
  • CircuitPython文件系统深度解析:安全擦除、空间优化与故障恢复实战
  • 在线视频去水印怎么做?2026免费去除水印网站与工具使用方法推荐 - 科技热点发布
  • 2026年5月河北冲孔板护栏/道路护栏/围墙护栏/光伏围栏/锌钢护栏直销工厂:安平县迪辉金属制品有限公司深度解析 - 2026年企业推荐榜
  • Java 面试中的微服务架构与 Spring Cloud
  • 数据库扛不住高并发?Redis缓存+双写一致性:给你的系统装上“涡轮增压”
  • 噬菌体展示技术体系、随机肽库设计及分子作用机制解析
  • 图片去水印完全指南:2026最新去水印软件推荐和方法对比 - 科技热点发布
  • 2026最权威的五大降重复率神器实际效果
  • 个人冲刺博客一
  • 在线水印怎么去除?4款高效去水印工具推荐+详细操作方法 - 科技热点发布
  • 2026 年抖音视频怎么保存到相册?最新保存方法与工具实测对比 - 科技热点发布
  • 基于Arduino与BLE的智能小车:从硬件组装到手机遥控全流程实战
  • Google Gemma 4 26B-A4B-it 与 DeepSeek V4 的长上下文优化思路:Sliding Window Attention 与 CSA/HCA 各自解决什么问题?
  • ts-rest:基于TypeScript契约实现端到端类型安全的REST API开发
  • 医疗设备应急选择:大厂呼吸机与开源方案的可靠性、合规性与部署策略深度对比
  • 2026徐州市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • JavaScript进阶_01_映射的方法
  • 2026长垣市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • VSCode + TypeScript:一站式配置@路径智能提示与模块解析,告别‘Cannot find module’
  • 小红书禁止下载怎么办?2026年实测5大保存方法+最强工具评测 - 科技热点发布