IT技術小屋

          秋風秋雨,皆入我心

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            38 隨筆 :: 1 文章 :: 19 評論 :: 0 Trackbacks
          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等于0時,結果為0;
          如果n等于1時,只有一個節點,結果為1;
          如果n等于2時,根節點有兩種選擇,結果為2;
          如果n大于3時,根節點有n種選擇,確定根節點后分別計算左右子樹的可能情況,然后相乘就是當前根節點下所有的變形種類,之后在求和即可。算法實現如下:
           1 public class UniqueBinarySearchTrees {
           2     public int numTrees(int n) {
           3         if (n == 1)
           4             return 1;
           5         if (n == 2)
           6             return 2;
           7         int[] record = new int[n + 1];
           8         record[0] = 1;
           9         record[1] = 1;
          10         record[2] = 2;
          11         for (int i = 3; i <= n; i++) {
          12             int tmp = 0;
          13             for (int k = 0; k < i; k++) {
          14                 tmp += (record[k] * record[i - k - 1]);
          15             }
          16             record[i] = tmp;
          17         }
          18         return record[n];
          19     }
          20 }
          posted on 2013-12-20 11:58 Meng Lee 閱讀(4311) 評論(0)  編輯  收藏 所屬分類: Leetcode
          主站蜘蛛池模板: 固镇县| 邯郸市| 布拖县| 太原市| 买车| 大余县| 梁平县| 名山县| 密山市| 南靖县| 永德县| 那坡县| 邻水| 武穴市| 扶沟县| 章丘市| 灌南县| 建平县| 景泰县| 丰原市| 当阳市| 高安市| 贵德县| 临澧县| 阳原县| 彭州市| 山东| 西华县| 克拉玛依市| 新竹县| 鱼台县| 赤水市| 新民市| 始兴县| 大埔区| 大化| 南投市| 阳城县| 台北县| 河间市| 瓦房店市|