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

设计asp网站wordpress 仿 主题

设计asp网站,wordpress 仿 主题,免费网络营销公司哪家好,小程序软件定制开发最大二叉树 链接 给定一个不重复的整数数组 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.yayakq.cn/news/836705/

相关文章:

  • 做旅游广告在哪个网站做效果好服务器网站建设
  • 万寿路网站建设沧州网站设计报价
  • 天津网站建设托管渭南市住房和城乡建设局网站
  • 关于网站建设的简历模板一键生成网站
  • 有了网站怎么做优化装修设计公司图片
  • 好的外贸网站的特征科技小手工
  • 金融集团网站模板设计导航网
  • 导航网站 php鹰枭乱wordpress
  • 凤凰网站ui专业设计网站建设及制作
  • 有什么展厅设计做的好的网站大型游戏平台排行榜
  • 八方建设集团有限公司网站wordpress外部样式
  • 柳编网站建设意义wordpress 小米社区
  • 网站域名使用方法网站经营网络备案信息管理系统
  • 域名备案查询站长工具海口网站建设
  • 上海网站平台建设北京seo排名技术
  • 网站开发 定价网站图片上传功能怎么做的
  • 做网站买什么书临沂做网站的公司
  • wordpress侧边栏广告南通网站流量优化
  • 做网站 微信开发前景wordpress 煎蛋评论
  • 广东建设报网站wordpress会员可见主题
  • 中国建设网站企业网上银行业务功能网站如何维护
  • 网站建设从哪几个情况去判网站登记备案查询
  • 厦门网页建站申请费用只做网站不推广能行吗
  • 金昌市住房和城乡建设局网站广州公司注册网址
  • 网网站基础建设优化知识企业网站的优化建议
  • 深圳创业扶持政策西安网络seo公司
  • 有没人做阿里巴巴网站维护的网站空间 控制面板
  • 苏州本地网站有哪些宝安中心地铁站是几号线
  • 智能营销型网站制作wordpress 系统需求
  • 网站开发有哪些要求自己怎么做直播网站吗