33 lines
633 B
Java
33 lines
633 B
Java
/*
|
|
* @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
|
|
|