本文最后更新于604 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
视频讲解:https://www.bilibili.com/video/BV1eK411o7QA
1.本题代码非常简单,但是思路确实是很独特看了卡哥的视频半天才反应过来,我觉得在这个里面对我来说最重要的想法就是dp数组的初始化问题,我们已经分析出来dp[0] = dp[1] = 1但是要是for循环i从1开始的话就会导致进入循环后dp[1] = 2导致后面所有的结果都有问题。
CPP
class Solution {
public:
int numTrees(int n) {
vector<int> dp(n + 1);
dp[0] = 1;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= i; j++){
dp[i] += dp[j - 1] * dp[i - j];
}
}
return dp[n];
}
};