class Solution { public List> subsetsWithDup(int[] nums) { List> result = new ArrayList<>(); Arrays.sort(nums); backtrack(result, new ArrayList(), nums, 0); return result; } public void backtrack(List> result, List temp, int[] nums, int start) { result.add(new ArrayList(temp)); for(int i=start; istart && nums[i] == nums[i-1]) continue; temp.add(nums[i]); backtrack(result, temp, nums, i+1); temp.remove(temp.size()-1); } } }