๐ 96. ไธๅ็ไบๅๆ็ดขๆ
2022ๅนด6ๆ9ๆฅๅฐไบ 1 ๅ้
๐ 96. ไธๅ็ไบๅๆ็ดขๆ
้พๅบฆ: ๐
้ฎ้ขๆ่ฟฐ
่งฃๆณ
class Solution {
public int numTrees(int n) {
// ๆ่ทฏ๏ผ
// 1 - n ๆฏไธช่็นๅๅฏไปฅๆไธบๆ น่็น
// ไป่ๅฐไบๅๆ็ดขๆฐๅไธบไบๅทฆๅณไธคๅ
// ๆ นๆฎไบๅๆ็ดขๆฐ่็นไธชๆฐ๏ผ่ฟ่ก้ๅฝ
// f(0) = 0
// f(1) = 1
// f(2) = (0, 1) + (1, 0) = 2
// f(3) = (0, 2) + (1, 1) + (2, 0) = 5
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i <= n; i ++) {
if(i % 2 == 0) {
for(int k = 0; k < i / 2; k ++) {
dp[i] += dp[k] * dp[i - 1 - k];
}
dp[i] *= 2;
} else {
for(int k = 0; k < (i - 1) / 2; k ++) {
dp[i] += dp[k] * dp[i - 1 - k];
}
dp[i] *= 2;
dp[i] += dp[(i - 1) / 2] * dp[(i - 1) / 2] ;
}
}
return dp[n];
}
}