LintCode 带重复元素的子集

题目

给定一个可能具有重复数字的列表,返回其所有可能的子集
注意事项

  • 子集中的每个元素都是非降序的
  • 两个子集间的顺序是无关紧要的
  • 解集中不能包含重复子集

样例
如果 S = [1,2,2],一个可能的答案为:

LintCode 带重复元素的子集_第1张图片
Paste_Image.png

代码

class Solution {
    /**
     * @param nums: A set of numbers.
     * @return: A list of lists. All valid subsets.
     */
    public ArrayList> subsetsWithDup(int[] nums) {
        // write your code here
        ArrayList> results = new ArrayList<>();
        if (nums == null) return results;
        
        if (nums.length == 0) {
            results.add(new ArrayList());
            return results;
        }
        Arrays.sort(nums);

        ArrayList subset = new ArrayList<>();
        helper(nums, 0, subset, results);
        
         return results;
        
        
    }
    public void helper(int[] nums, int startIndex, ArrayList subset, ArrayList> results){
        results.add(new ArrayList(subset));
        for(int i=startIndex; i

你可能感兴趣的:(LintCode 带重复元素的子集)