96.異なる二叉探索ツリーc++
5871 ワード
96.異なる二叉探索ツリー
前に書いて、白さんはゼロから問題を解いて、解答会で構想を書くことができて、正しい答え、およびすべての使用した文法と知識の点
1.方法3はどう思いますか? は,二叉探索ツリーの特徴を利用して,n個のノードに二叉探索ツリーの種類がG(n)であると仮定すると,1をルートノード,左サブツリールートノードを0,右サブツリールートノードをG(n−1),2をルートノードと仮定すると,右サブツリールートノードをG(n−2)と仮定するので,G(n)=G(0)xG(n−1)...G(n−1)*G(0) と導出する.解題手順 配列を設け、配列の大きさを既知にし、式により を求める.
2.方法1はどう思いますか? カトラン数公式を用いて を求める
時間の複雑さ/空間の複雑さの分析/面接のシーンはどのように答えます時間空間複雑度方法1:2回の循環O(N^2)、1つの配列O(N).方法二:一次循環O(N)、一つの変数O(1).
知識点と反省二叉探索木 カトラン数
前に書いて、白さんはゼロから問題を解いて、解答会で構想を書くことができて、正しい答え、およびすべての使用した文法と知識の点
1.方法3
class Solution {
public:
int numTrees(int n) {
vector<int>ans(n+1);
ans[0]=1;
ans[1]=1;
for(int i=2;i<=n;i++){
for(int j=0;j<i;j++){
ans[i]+=ans[j]*ans[i-1-j];
}
}
return ans[n];
}
};
2.方法1
class Solution {
public:
int numTrees(int n) {
long long C = 1;
for (int i = 0; i < n; ++i) {
C = C * 2 * (2 * i + 1) / (i + 2);
}
return (int)C;
}
};
時間の複雑さ/空間の複雑さの分析/面接のシーンはどのように答えます
知識点と反省