您的位置:首页 > 其它

leetcode之subset II

2017-09-05 21:48 197 查看
题目

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 =[1,2,2], a solution is:

[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]

实现

     publicArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {

              ArrayList<ArrayList<Integer>>res = new ArrayList<>();

              if(num == null || num.length == 0) {

                     returnres;

              }

              Arrays.sort(num);

              ArrayList<Integer>list = new ArrayList<>();

              solve(num,0, res, list);

              returnres;

       }

     privatevoid solve(int[] num, int start, ArrayList<ArrayList<Integer>> res,ArrayList<Integer> list) {

              res.add(newArrayList<>(list));

              if(start >= num.length)

                     return;

              for(int i = start; i < num.length; i++) {

                     if(i > start && num[i] == num[i - 1]) {

                            continue;

                     }

                     list.add(num[i]);

                     solve(num,i + 1, res, list);

                     list.remove(list.size()- 1);

              }

       }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: