Q1题目链接:https://leetcode.com/problems/unique-binary-search-trees/
leetcode 96 有多少种不同的二叉搜索树
看到题目的第一思路:
如何有效穷举 几个数字规定下的所有二叉搜索树的可能
代码随想录之后的想法和总结:
整个过程就是不停地 拆子区间、乘法(左右子树组合)、加法(不同根节点累加)。
-
递归树会不断地拆成「左区间 × 右区间」。
-
很多子问题会被重复计算,比如
count(4,5)出现在多个地方。 -
这也是为什么优化版会用 记忆化递归 或 DP 来避免重复。(用dp备忘录方法)
时间复杂度以及空间复杂度:
时间:
-
子问题:
count(lo, hi)只和区间长度有关。 -
区间总数:最多
O(n^2)(因为 lo,hi 各有 n 个可能)。 -
每个子问题要枚举根节点
mid,最多O(n)次。
所以总时间复杂度为:O(n2⋅n)=O(n3)
空间:
-
备忘

&spm=1001.2101.3001.5002&articleId=150598394&d=1&t=3&u=b1b9b63ba17b493e8de1ff76f086dae2)
156

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



