diff --git a/96.unique-binary-search-trees.java b/96.unique-binary-search-trees.java new file mode 100644 index 0000000..65ebde4 --- /dev/null +++ b/96.unique-binary-search-trees.java @@ -0,0 +1,32 @@ +/* + * @lc app=leetcode id=96 lang=java + * + * [96] Unique Binary Search Trees + */ + +// @lc code=start +class Solution { + /** + * dp[n] = dp[n-1] + dp[1]+dp[n-2] + * + * @param n + * @return + */ + public int numTrees(int n) { + int[] dp = new int[n+1]; + for(int i=1; i<=n; i++) { + dp[i] = 0; + } + dp[1] = 1; + for(int i=2; i<=n; i++) { + for(int j=0; j<=i-1;j++) { + int left = j>0?dp[j]:1; + int right = i-1-j>0?dp[i-1-j]:1; + dp[i] += left*right; + } + } + return dp[n]; + } +} +// @lc code=end +