class Solution { public List
> subsetsWithDup(int[] nums) { List
> result = new ArrayList<>(); result.add(new ArrayList<>()); Arrays.sort(nums); int count = 0; for (int i = 0; i < nums.length; i += count) { count = 0; while (count + i < nums.length && nums[count + i] == nums[i]) { count++; } int prevSize = result.size(); for (int j = 0; j < prevSize; j++) { List newRow = new ArrayList<>(result.get(j)); for (int k = 0; k < count; k++) { newRow.add(nums[i]); result.add(new ArrayList<>(newRow)); } } } return result; }}