zoukankan      html  css  js  c++  java
  • [LeetCode][JavaScript]Unique Binary Search Trees

    Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

    For example,
    Given n = 3, there are a total of 5 unique BST's.

       1         3     3      2      1
               /     /      /       
         3     2     1      1   3      2
        /     /                        
       2     1         2                 3

    https://leetcode.com/problems/unique-binary-search-trees/
     
     
     
     
     

     

    生成n个节点的二叉排序树,只要求出个数。

    从1到n遍历,选当前的点为根,比根小的在左子树,比根大的在右子树。

    如果用递归,有很多重复计算的子树会TLE,改用DP,记住之前算过的节点。

     1 /**
     2  * @param {number} n
     3  * @return {number}
     4  */
     5 var numTrees = function(n) {
     6     var dp = [1, 1, 2], i, j, left, right, sum;
     7     for(i = 3; i <= n; i++){
     8         sum = 0;
     9         for(j = 0; j < i; j++){
    10             left = dp[j];
    11             right = dp[i - j - 1];
    12             sum += left * right;
    13         }
    14         dp[i] = sum;
    15     }
    16     return dp[n];
    17 };

    TLE:

     1 /**
     2  * @param {number} n
     3  * @return {number}
     4  */
     5 var numTrees_TLE = function(n) {
     6     var target = [];
     7     for(var i = 1; i <= n; i++){
     8         target.push(i);
     9     }
    10     return getNum(target);
    11 
    12     function getNum(arr){
    13         var sum = 0, left, right;
    14         if(arr.length === 2){
    15             return 2;
    16         }else if(arr.length <= 1){
    17             return 1;
    18         }
    19         for(var i = 0; i < arr.length; i++){
    20             left = getNum(arr.slice(0, i));
    21             right = getNum(arr.slice(i + 1, arr.length));
    22             sum += left * right;
    23         }
    24         return sum;
    25     }
    26 };
  • 相关阅读:
    Iscroll4使用心得 (转)
    请求接口数据实例
    jQuery插件开发全解析(转)
    js中可以改变作用域的三种方式(改变this)
    this基础(转)
    Hash扫盲
    JS编码解码 (转)
    自定义菜单实例
    DOM(转)
    js扫盲
  • 原文地址:https://www.cnblogs.com/Liok3187/p/4948510.html
Copyright © 2011-2022 走看看