zoukankan      html  css  js  c++  java
  • [leetCode]Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

    For 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


    主要是递归的思想,大数的分支都是小树组成的,存在组合思想的都可以考虑递归。将一个大数划分为小数的集合,自己写个n=3,n=5的就可以知道了,使用map容器可以极大提高效率
     1 #include <iostream>
     2 #include <map>
     3 using namespace std;
     4 class Solution {
     5 public:
     6     map<int,int> imap;
     7     map<int,int> ::iterator iter;
     8     int numTrees(int n) {
     9         if(n <= 0)    return 0;
    10         return pathNumcalc(n);
    11     }
    12 private:
    13     int pathNumcalc(int n){
    14         int left,right,sum;
    15         left = right = sum = 0;
    16         iter = imap.find(n);
    17         if(iter != imap.end()) return iter->second;
    18         if(n == 0)    sum = 0;
    19         if(n == 1)  sum = 1;
    20         for(int i = 1; i <= n; i++){
    21             left = pathNumcalc(i-1);
    22             right = pathNumcalc(n-i);
    23             if(left == 0)        sum+=right;
    24             else if(right == 0)    sum+=left;
    25             else sum+=left*right;
    26         }
    27         imap.insert(pair<int,int>(n,sum));
    28         return sum;
    29     }
    30 };
     
    艰难的成长
  • 相关阅读:
    Jmeter环境搭建
    python基础(四)
    python基础(三)
    python基础(二)
    python基础(一)
    jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包
    接口测试及其工具简单使用
    Linux安装jdk
    使用loadrunner监控apcahe
    LoadRunner监控Linux
  • 原文地址:https://www.cnblogs.com/marylins/p/3585736.html
Copyright © 2011-2022 走看看