您的位置:首页 > 产品设计 > UI/UE

lintcode: Unique Binary Search Trees

2016-04-03 21:51 651 查看
Given n, how many structurally unique BSTs (binary search trees) that store values 1...n?

Have you met this question in a real interview?

Example

Given n = 3, there are a total of 5 unique BST's.

1           3    3       2      1
\         /    /       / \      \
3      2     1       1   3      2
/      /       \                  \
2     1          2                  3


Tags


class Solution {
public:
/**
* @paramn n: An integer
* @return: An integer
*/

int numTrees(int n) {
// write your code here
/*
if (n==1 || n==0)
return 1;

static vector<int> dp(n+1); //因为loop从1到n, 所以设置 dp为 n+1

if (dp
!= 0)
return dp
;

int retVal = 0;
for (int i=1; i<=n; i++)
{
if (i==1 || i==n)
retVal += numTrees(n-1);
else
retVal += (numTrees(i-1)*numTrees(n-i));
}
dp
= retVal;

return retVal;

*/

if (n == 1 || n == 0)
return 1;

vector<int> nums(n+1);

nums[0] = 1;

for (int i=1; i<=n; i++)
{
for (int j=1; j<=i; j++)
{
nums[i] += nums[j-1]*nums[i-j];
}
}

return nums
;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: