文章目录
力扣算法学习day27-3
96-不同的二叉搜索树
题目
代码实现
class Solution {
public int numTrees(int n) {
// dp 速度 0ms
// 1.创建dp数组,确定下标含义
int[] dp = new int[n+1];// 由题,dp[i]应该1到n构成的互不相同的二叉搜索树种数
// 2.确定迭代公式:参考代码随想录,讲得很完美了。
// 迭代公式:i > 0, dp[i] += dp[j-1] * dp[i-j] ,j <= i,j从1开始遍历。
// 3.初始化
dp[0] = 1;
// 4.确定遍历顺序
for(int i = 1;i < dp.length;i++){
for(int j = 1;j <= i;j++){
dp[i] += dp[j-1] * dp[i-j];
}
}
// 5.检验dp数组结果是否符合
// for(int i = 0;i < dp.length;i++){
// System.out.print(dp[i]+",");
// }
return dp[n];
}
}