题目

第一发超时了,可以用一个数组表示状态,所有相等长度的区间,它的BST数目是一样的。

class Solution {
public:
    int vis[10005];
    int numTrees(int n) {
        
        if(n<1)
            return 0;
        vis[1]=1;
        return fun(1,n);
    }
    
    int fun(int l,int r)
    {
        if(vis[r-l+1]!=0)
        {
            return vis[r-l+1];
        }
        int num=0;
        for(int i=l;i<=r;i++)
        {
            
            int lefts = fun(l,i-1);
            int rights = fun(i+1,r);
            
            num += lefts * rights;
            
        }
        if(num==0)
            num++;
        
        vis[r-l+1]=num;
        return num;
    }
};

相关文章:

  • 2021-07-02
  • 2022-12-23
  • 2021-10-25
  • 2022-12-23
  • 2021-11-03
猜你喜欢
  • 2021-11-06
  • 2021-10-30
  • 2022-02-21
  • 2021-08-13
  • 2021-10-28
  • 2021-11-22
  • 2021-05-17
相关资源
相似解决方案