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 閱讀(4318) 評論(0)  編輯  收藏 所屬分類: Leetcode
          主站蜘蛛池模板: 志丹县| 成安县| 阿坝县| 延安市| 海阳市| 龙里县| 安新县| 伊春市| 项城市| 望城县| 东阿县| 海淀区| 特克斯县| 上林县| 淅川县| 沂水县| 定安县| 当阳市| 乌兰察布市| 会理县| 平原县| 东台市| 水城县| 壶关县| 柳州市| 南召县| 宜兰市| 大英县| 嘉义市| 枝江市| 宾川县| 长阳| 宝丰县| 麻江县| 津南区| 通道| 修文县| 且末县| 左贡县| 思南县| 辰溪县|