class Solution {
public:
int numTrees(int n) {
vector<int> f(n+,);
f[]=;
f[]=;
for(int i=;i<=n;i++){
for(int j=;j<=i;j++){
f[i]+=f[j-]*f[i-j];
}
}
return f[n];
}
};

补充一个python的实现:

 class Solution:
def numTrees(self, n: 'int') -> 'int':
if n==1:
return 1
else:
dp = [1] * (n+1)
#dp[0]=1
#dp[1]=1
for t in range(2,n+1):#2->n
i=0
j=t-1
sums = 0
while i<=t-1 and j>=0:
sums += dp[i] * dp[j]
i+=1
j-=1
dp[t]=sums
return dp[n]

这道题的思路是,从1到n,依次选择某节点作为根节点。假设n=2,

1为根节点:比1小的元素有0个,比1大的元素有1个,因此有dp[0]*dp[1]

2为根节点:比2小的元素有1个,比2大的元素有0个,因此有dp[1]*dp[0]

这两种情况之和,即为dp[2]。

再假设n=3,因为之前已经计算过dp[2]的值了,dp[2]表示2个节点的组合数量,现在要计算dp[3]

1为根:dp[0]*dp[2]

2为根:dp[1]*dp[1]

3为根:dp[2]*dp[0]

以上三项之和为dp[3],最终返回dp[n]即为所求。

leetcode96的更多相关文章

  1. LeetCode-96. Unique Binary Search Trees

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

  2. leetcode96 Unique Binary Search Trees

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

  3. [Swift]LeetCode96. 不同的二叉搜索树 | Unique Binary Search Trees

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

  4. Leetcode96.Unique Binary Search Trees不同的二叉搜索树

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 假设n个节点存在二叉排序树的 ...

  5. 95题--不同的二叉搜索树II(java、中等难度)

    题目描述:给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 . 示例如下: 分析:这一题需要对比LeetCode96题来分析:https://www.cnblogs.com/K ...

随机推荐

  1. angular2升级到angular4历程

    Angular 4 在昨天(2017-03-24)正式发布了,我的系列教程也得更新一下.步骤略繁琐,不用 cli 的项目反倒更简单一些,但是 cli 平时给我们的便利还是很多的,升级最多半年一次而已. ...

  2. POJ 3254 Corn Fields (状压入门)

    Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M≤ 12; 1 ≤ N ≤ 12) ...

  3. linux之基础操作

  4. Cordova编译报AAPT错误的解决方法

    因为项目中同时使用cordova-hot-code-push-plugin和phonegap-plugin-barcodescanner,编译时报错:AAPT: error: resource and ...

  5. ipa 注入 dylib

    前些日子再github找到了一个内存修改器 DLGMemor 免越狱在app内植入修改器,感觉很不错,就尝试去看看是否可行. 用到的工具:  Xcode 10. optool 首先要做的,安装 opt ...

  6. MySQL设置空密码

    因为刚安装的时候,MySQL强制设置密码,但是我需要设置MySQL为空密码 语句: ';

  7. hadoop day 5

    1.Zookeeper Zookeeper的安装和配置(集群模式) 1)在conf目录下创建一个配置文件zoo.cfg, tickTime=2000——心跳检测的时间间隔(ms) dataDir=/U ...

  8. 【草稿】实验室新手HandBook

    PS:本文旨在给初入CV领域实验室的新手一个可供参考的学习列表,使得能够快速熟悉常用且必要的工具.

  9. es6模块与 commonJS规范的区别

    https://www.cnblogs.com/weblinda/p/6740833.html

  10. 产生10个随机数5-9之间 统计一个int类型的一维数组中有多少个在[min,max]之间的数

    * 产生10个随机数5-9之间 统计一个int类型的一维数组中有多少个在[min,max]之间的数 */ import java.util.*; public class Demo{ public s ...