原题
https://leetcode.cn/problems/unique-binary-search-trees/description/
思路
动态规划
复杂度
时间:O(n2)
空间:O(n)
Python代码
class Solution:
def numTrees(self, n: int) -> int:
dp = [0] * (n + 1)
dp[0], dp[1] = 1, 1
# 总结点数
for i in range(2, n+1):
# 左子树的节点数
for j in range(i):
dp[i] += dp[j] * dp[i - j - 1]
return dp[n]
Go代码
func numTrees(n int) int {
dp := make([]int, n+1)
dp[0], dp[1] = 1, 1
// 总结点数
for i := 2; i < n+1; i++ {
// 左子树的节点数
for j := 0; j < i; j++ {
dp[i] += dp[j] * dp[i-j-1]
}
}
return dp[n]
}
1128

被折叠的 条评论
为什么被折叠?



