96. Unique Binary Search Trees
给定1到n这n个数,用它们能够构成多少种形状不同的二叉搜索树。
思路:动态规划,dp[i]表示i 个数字能组成的树的个数,状态转移方程: dp[0], dp[1], dp[2] = 1, 1, 2, 对于n>2, dp[n] = dp[0]dp[n-1] +dp[1]dp[[n-2] + ..+dp[n-1]*dp[0]
1 | class Solution: |
Go:
1 | // 7 star, 未能想出来,难点在于发现规律,dp[i] = dp[0]*dp[i-1] + dp[1]*dp[i-2] + ... + dp[i-1]*dp[0] |