题目描述
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
示例 1:
解题思路
- 回溯:元素重复不可复选问题,需要提前排序
 
执行用时:1 ms, 在所有 Java 提交中击败了99.17%的用户
内存消耗:41.6 MB, 在所有 Java 提交中击败了76.27%的用户
通过测试用例:20 / 20
时间 O(N)
空间 O(N)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | class Solution {     List<List<Integer>> res=new ArrayList<List<Integer>>();     ArrayList<Integer> list=new ArrayList<Integer>();     public List<List<Integer>> subsetsWithDup(int[] nums) {         Arrays.sort(nums);         backTrace(nums,0);         return res;     }     public void backTrace(int []nums,int begin){         res.add(new ArrayList<>(list));         for(int i=begin;i<nums.length;i++){             if((i>begin)&&(nums[i]==nums[i-1])){                 continue;             }             list.add(nums[i]);             backTrace(nums,i+1);             list.remove(list.size()-1);         }     } }
 
  |