package algorithm.leetcode; /** * @author: mayuan * @desc: 不同的二叉搜索树 * https://leetcode.com/problems/unique-binary-search-trees/discuss/31666/DP-Solution-in-6-lines-with-explanation.-F(i-n)-G(i-1)-*-G(n-i) * @date: 2019/02/18 */ public class Solution096 { public int numTrees(int n) { int[] dp = new int[n + 1]; dp[0] = 1; dp[1] = 1; for (int i = 2; i <= n; ++i) { for (int j = 1; j <= i; ++j) { dp[i] += dp[j - 1] * dp[i - j]; } } return dp[n]; } }