zoukankan      html  css  js  c++  java
  • 654. Maximum Binary Tree

    654. Maximum Binary Tree

    题目大意:

        意思就是给你一组数,先选一个最大的作为根,这个数左边的数组作为左子树,右边的数组作为右子树,重复上一步。

        读完就知道是递归了。

        这个题真尼玛恶心,对JavaScript的友好度简直为0,用Js的可以直接放弃了。

     1         function TreeNode(val) {
     2             this.val = val
     3             this.left = this.right = null
     4         }
     5 
     6         var constructMaximumBinaryTree = function(nums) {
     7             var ans = findmaxvalue(nums, 0, nums.length-1)
     8             return ans
     9         }
    10 
    11         function findmaxvalue(nums, l, r)
    12         {
    13             if(r < l) {
    14                 return null;
    15             }
    16             var max = nums[l];
    17             var maxpos = l;
    18             for(var i=l+1;i<=r;i++)
    19             {
    20                 if(nums[i] > max) {
    21                     maxpos = i
    22                     max = nums[i]
    23                 }
    24 
    25             }
    26             var root = new TreeNode(max)
    27             root.left = findmaxvalue(nums, l, maxpos-1)
    28             root.right = findmaxvalue(nums, maxpos+1, r)
    29             return root;
    30         }

    时间复杂度应该是小于n2的,但是我不知道这种方法的复杂度到底是多少,我猜是x(x可能是nlogn,我也不太清楚)。

    如果用线段树的话,复杂度应该是x'(n < x' < x < n2

    我提交了一下发现是错的,理论输出是一个数组,我tm甚至用BFS搜索了一下二叉树,加入到一个数组里了,然后我本来push为null的元素,测评机输出为一个数组???????气的一笔,随便找了份代码交了。

    BFS代码:

            var ans = findmaxvalue(nums, 0, nums.length-1)
            var res = []
            var queue = []
            queue.push(ans)
            while(queue.length != 0) {
                var t = queue.shift()
                if(t != null) {
                    res.push(t.val)
                    if(t.left != null || t.right != null) {
                        queue.push(t.left)
                        queue.push(t.right)
                    }
                }
                else {
                    res.push(null)
                }
            }
  • 相关阅读:
    Wireshark使用
    21世纪最需要的7种人才
    .net中生成ssl web证书
    flash10a.ocx无法删除的解决
    iframe无刷新异步上传
    jquery验证网址输入
    jquery验证省市级联
    .net代码生成器自动生成DAL和BLL类库
    jquery实现checkbox全选(不全选)
    Web.config配置文件初识
  • 原文地址:https://www.cnblogs.com/liwenchi/p/8315986.html
Copyright © 2011-2022 走看看