给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
分析:本题均为使用之前题目的解题技巧,如用flag来保证没有重复子集,用子集1.0的整体框架等等
参考代码:
public List> subsetsWithDup(int[] nums) {
Arrays.sort(nums);
boolean[] flag = new boolean[nums.length];
sup(nums,0,flag);
return ret;
}
List> ret = new ArrayList<>();
LinkedList
private void sup(int[] nums,int index,boolean[] flag){
ret.add(new ArrayList<>(path));
for(int i=index;i
flag[i]=true;
path.add(nums[i]);
sup(nums,i+1,flag);
flag[i]=false;
path.removeLast();
}
}
