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 閱讀(183) 評論(0)  編輯  收藏 所屬分類: Leetcode
          主站蜘蛛池模板: 青浦区| 乐平市| 福鼎市| 马龙县| 健康| 资兴市| 公主岭市| 绵阳市| 元朗区| 凤台县| 沙湾县| 桦川县| 文安县| 阿荣旗| 漳浦县| 绍兴县| 天台县| 会昌县| 静乐县| 刚察县| 合阳县| 南木林县| 体育| 浪卡子县| 咸丰县| 安庆市| 永昌县| 常山县| 黔西县| 濮阳县| 平顺县| 东阳市| 乃东县| 扎鲁特旗| 封丘县| 民丰县| 万荣县| 长垣县| 正定县| 阿尔山市| 达孜县|