leetcode-90. Subsets II

来源:互联网 发布:阿里云上海机房地址 编辑:程序博客网 时间:2024/06/09 23:27

leetcode-90. Subsets II

题目:

Given a collection of integers that might contain duplicates, nums, return all possible subsets.

Note: The solution set must not contain duplicate subsets.

For example,
If nums = [1,2,2], a solution is:

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

典型的回溯法,而且leetcode是很人性化的,给的例子中就说明了可以出现重复的情况,那么典型的方法就是先排序,然后加上一个判断条件,if(i!=pos && nums[i]==nums[i-1]) continue;的时候跳过。

public class Solution {    public List<List<Integer>> subsetsWithDup(int[] nums) {        List<List<Integer>> ret = new ArrayList<List<Integer>>();        Arrays.sort(nums);        helper(ret,new ArrayList<Integer>(),nums,0);        return ret;    }    private void helper(List<List<Integer>> ret , ArrayList<Integer> list, int[] nums, int pos){        ret.add(new ArrayList<Integer>(list));        for(int i = pos ; i < nums.length ; i++){            if(i!=pos && nums[i]==nums[i-1]) continue;            list.add(nums[i]);            helper(ret,list,nums,i+1);            list.remove(list.size()-1);        }    }}
0 0
原创粉丝点击