Python程序:计算使用0到n个值可以形成的唯一二叉搜索树的数量
假设我们有一个数字n,我们需要找到使用[0, n)范围内的数字可以生成的唯一BST的数量。如果答案非常大,则对10^9+7取模。
因此,如果输入是n = 3,则输出为5。
为了解决这个问题,我们将遵循以下步骤:
- 分子 := 1
- 分母 := n + 1
- 对于 i 从1到n,执行:
- 分子 := 分子 * (n + i)
- 分子 := 分子 mod m
- 分母 := 分母 * i
- 分母 := 分母 mod m
- 分子 := 分子 * (分母^(m-2)) mod m
- 返回 分子 mod m
让我们看看下面的实现来更好地理解:
示例
class Solution: def solve(self, n): m = 10 ** 9 + 7 numer = 1 denom = n + 1 for i in range(1, n + 1): numer *= n + i numer %= m denom *= i denom %= m numer *= pow(denom, m-2, m) return numer % m ob = Solution() print(ob.solve(4))
输入
4
输出
14
广告