标签:lse cto log 代码 原来 记忆 leetcode tps code
题意:给定一个数n,求出1~n,所有二叉树的个数;
在LeetCode 95中,要你求出所有二叉树,并返回结点,题解见:https://www.cnblogs.com/yy-1046741080/p/11594454.html。
原来我就想用直接递归,来求出结点个数的,结果发现TE; 在近期了解了DP后,修改了一下源代码,就顺利过了,但是空间效率并不是很理想,因为DP记录了很多数据,可能也是我DP用的不太好导致的。
另外,关于二维数组的动态内存申请还是值得记忆一下的;(虽然可以使用vector来定义指定长度)
要点:
1 class Solution { 2 public: 3 // [left,right) 4 int CalNum(int left,int right,int** array){ 5 if(left>=right){ 6 array[left][right]=1; 7 return 1; 8 } 9 else{ 10 int sum=0; 11 for(int i=left;i<right;i++){ 12 if(array[left][i]==-1){ 13 array[left][i]=CalNum(left,i,array); 14 } 15 if(array[i+1][right]==-1){ 16 array[i+1][right]=CalNum(i+1,right,array); 17 } 18 sum+=array[i+1][right]*array[left][i]; 19 } 20 return sum; 21 } 22 } 23 24 int numTrees(int n) { 25 // DP array 26 int** array; 27 array=new int*[n+2]; 28 for(int i=1;i<=n+1;i++){ 29 array[i]=new int[n+2]; 30 for(int j=1;j<=n+1;j++){ 31 array[i][j]=-1; 32 } 33 } 34 35 return CalNum(1,n+1,array); 36 } 37 };
LeetCode 96. Unique Binary Search Trees
标签:lse cto log 代码 原来 记忆 leetcode tps code
原文地址:https://www.cnblogs.com/yy-1046741080/p/11613945.html