博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode——Unique Binary Search Trees
阅读量:4566 次
发布时间:2019-06-08

本文共 978 字,大约阅读时间需要 3 分钟。

Question

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

Solution

动态规划,将大问题划分为小问题,从底向上依次求解。

当规模为1的时候

  • 就只有一种结果

当规模为2的时候

  • 1可以当根,那么总的方案,等于比1小的节点的方案乘上比1大的节点的方案。 dp[2] = dp[1 - 1] * dp[2 - 1]
  • 同理2也可以当跟节点 dp[2] += dp[2 - 1] * dp[2 - 2]

当规模为3的时候

  • dp[3] += (dp[1 - 1] * dp[3 - 1] + dp[2 - 1] * dp[3 - 2] + dp[3 - 1] * dp[3 - 3])

...

Code

class Solution {public:    int numTrees(int n) {        vector
dp(n + 1); dp[0] = dp[1] = 1; for (int i = 2; i <= n; i++) { dp[i] = 0; for (int j = 1; j <= i; j++) { dp[i] += dp[j - 1] * dp[i - j]; } } return dp[n]; }};

转载于:https://www.cnblogs.com/zhonghuasong/p/7514700.html

你可能感兴趣的文章
MFC的多国语言界面的实现
查看>>
四则运算个人项目 最终版
查看>>
java线程系列---java5中的线程池
查看>>
SQL表连接
查看>>
新秀系列C/C++经典问题(四)
查看>>
memset函数具体说明
查看>>
经常使用的android弹出对话框
查看>>
确保新站自身站点设计的合理性的六大注意点
查看>>
promise
查看>>
Go 网络编程笔记
查看>>
[]Java面试题123道
查看>>
中间件与auth认证的那点儿所以然
查看>>
Scala
查看>>
Android 中LinearLayout控件属性
查看>>
面向对象之多态性
查看>>
树状数组
查看>>
【2019.8.14 慈溪模拟赛 T1】我不是!我没有!别瞎说啊!(notme)(BFS+DP)
查看>>
多任务--进程 及 进程间通信
查看>>
多线程/多进程+QProgressBar实现进度条
查看>>
多任务(进程)案例----- 拷贝文件夹
查看>>