IT技術小屋

          秋風秋雨,皆入我心

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            38 隨筆 :: 1 文章 :: 19 評論 :: 0 Trackbacks
          Given a collection of integers that might contain duplicates, S, return all possible subsets.
          Note:
          Elements in a subset must be in non-descending order.
          The solution set must not contain duplicate subsets.
          For example,
          If S = [1,2,2], a solution is:
          [
            [2],
            [1],
            [1,2,2],
            [2,2],
            [1,2],
            []
          ]

          由于元素中可能存在重復,因此較之于Subset的實現,需要加一些判斷。如果碰到了重復元素,只需要在上一次迭代新增的子集的基礎上再進行迭代即可。實現代碼如下:
           1 public class SubsetsII {
           2     public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
           3         ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
           4         ArrayList<ArrayList<Integer>> lastLevel = null;
           5         ret.add(new ArrayList<Integer>());
           6         Arrays.sort(num);
           7         for (int i = 0; i < num.length; i++) {
           8             ArrayList<ArrayList<Integer>> tmp = new ArrayList<ArrayList<Integer>>();
           9             ArrayList<ArrayList<Integer>> prev = i == 0 || num[i] != num[i - 1] ? ret : lastLevel;
          10             for (ArrayList<Integer> s : prev) {
          11                 ArrayList<Integer> newSet = new ArrayList<Integer>(s);
          12                 newSet.add(num[i]);
          13                 tmp.add(newSet);
          14             }
          15             ret.addAll(tmp);
          16             lastLevel = tmp;
          17         }
          18         return ret;
          19     }
          20 }
          posted on 2014-01-03 16:40 Meng Lee 閱讀(189) 評論(0)  編輯  收藏 所屬分類: Leetcode
          主站蜘蛛池模板: 寿光市| 油尖旺区| 桂林市| 海城市| 灵武市| 安西县| 城口县| 商丘市| 建水县| 昂仁县| 贵阳市| 鄂尔多斯市| 湾仔区| 兴安盟| 元朗区| 奎屯市| 广汉市| 德兴市| 常德市| 洞头县| 天峻县| 大方县| 仙居县| 汽车| 江口县| 宝应县| 中江县| 竹山县| 时尚| 上栗县| 双桥区| 孟村| 颍上县| 井研县| 彩票| 大洼县| 双辽市| 全南县| 平远县| 长沙市| 筠连县|