题解

题解
import java.util.*;
public class Leetcode_90 {
public List<List<Integer>> subsetsWithDup(int[] nums) {
List<Integer> templist = new ArrayList<>();
List<List<Integer>> ret = new ArrayList<>();
Arrays.sort(nums);
findSubset(nums,templist,ret,0);
return ret;
}
private void findSubset(int[] nums, List<Integer> templist, List<List<Integer>>ret, int start)
{
ret.add(new ArrayList<>(templist));
for(int i = start;i<nums.length;i++)
{
if(i > start && nums[i] == nums[i-1]) continue;
templist.add(nums[i]);
findSubset(nums,templist,ret,i+1);
templist.remove(templist.size()-1);
}
}
public static void main(String[] args)
{
int[] nums = {1,2,2};
Leetcode_90 a = new Leetcode_90();
List<List<Integer>>ret = a.subsetsWithDup(nums);
System.out.println(ret.toString());
}
}