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

邯郸市建设局网站材料下载入口抖音seo推荐算法

邯郸市建设局网站材料下载入口,抖音seo推荐算法,设计师服务平台素材下载,网页游戏折扣最大二叉树 链接 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums…

最大二叉树

链接
给定一个不重复的整数数组 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 <= 1000
0 <= nums[i] <= 1000
nums 中的所有整数 互不相同

思路

  • 返回值,参数
    返回值——构建树,返回节点
    参数——数组
    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
  • 终止条件
    1 <= nums.length <= 1000,数组不为空
    当数组为1时,说明到叶子节点了
  • 单次递归
  1. 找最大值和最大值位置,节点赋值
        int max=0;int maxIndex=0;for(int i=0;i<nums.size();i++){if(nums[i]>max){max=nums[i];maxIndex=i;}}       node->val=max;
  1. 左数组,右数组
        vector<int> leftnums(nums.begin(),nums.begin()+maxIndex);vector<int> rightnums(nums.begin()+maxIndex+1,nums.end());

+1 把最大值删除,不然死循环,爆内存

  1. 构建左子树,右子树
        if(leftnums.size()>0)node->left=constructMaximumBinaryTree(leftnums);if(rightnums.size()>0) node->right=constructMaximumBinaryTree(rightnums);

代码

class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {TreeNode* node=new TreeNode(0);if(nums.size()==1){node->val=nums[0];return node;}int max=0;int maxIndex=0;for(int i=0;i<nums.size();i++){if(nums[i]>max){max=nums[i];maxIndex=i;}}node->val=max;vector<int> leftnums(nums.begin(),nums.begin()+maxIndex);vector<int> rightnums(nums.begin()+maxIndex+1,nums.end());if(leftnums.size()>0)node->left=constructMaximumBinaryTree(leftnums);if(rightnums.size()>0) node->right=constructMaximumBinaryTree(rightnums);return node;}
};

问题

划分左数组,右数组,没有加一,把最大值删除,死循环,爆内存

        vector<int> leftnums(nums.begin(),nums.begin()+maxIndex);vector<int> rightnums(nums.begin()+maxIndex+1,nums.end());
http://www.ds6.com.cn/news/54511.html

相关文章:

  • 简单网站建设合同百度关键词下拉有什么软件
  • 十里堡网站建设商丘网络推广外包
  • 网站收录排名网络优化推广公司哪家好
  • 做网站为什么用phpseo公司品牌哪家好
  • 石家庄政府网站建设网上找客户有什么渠道
  • 两学一做网站 新闻最近最新新闻
  • 做ui设计用什么素材网站潍坊住房公积金管理中心
  • 网站怎么做 凡科国家免费培训机构
  • 福州成人高考网站360社区app
  • 做网站收录厦门网站seo
  • 物流企业网站织梦模板百度移动端排名软件
  • 做网站找个人百度平台推广联系方式
  • 四川省建设勘察设计网站软文代写兼职
  • 企业网站功能jsurl中文转码
  • 网站备案修改域名ip百度指数数据分析平台官网
  • 葫芦岛公司做网站如何注册域名及网站
  • 制作网站开发元搜索引擎有哪些
  • 网站建设综合技术如何建造自己的网站
  • 公众号链接电影网站怎么做企业qq怎么申请
  • 我的网站模板下载不了站长工具星空传媒
  • 手机登录网站怎么建设重庆seo入门教程
  • 黑别人网站谷歌网站网址
  • 公路水运建设质量安全监督网站网站注册账号
  • 全国城乡和住房建设厅查询网seo服务优化
  • 网站优化排名如何做网店代运营骗局
  • 专业做网站的网站正规推广平台
  • wordpress上传文件按标题seo关键词
  • 国外网站dns在线解析绍兴seo排名公司
  • php网站权限设置必应搜索推广
  • 网站建设与制作与维护西安百度搜索排名