Question Given an integer array nums
that may contain duplicates, return all possible subsets (the power set) .
The solution set must not contain duplicate subsets. Return the solution in any order .
https://leetcode.com/problems/subsets-ii/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public List<List<Integer>> subsetsWithDup(int [] nums) { List<List<Integer>> res = new ArrayList<>(); Arrays.sort(nums); backtrack(res, new ArrayList<>(), nums, 0 ); return res; } private void backtrack (List<List<Integer>> list, List<Integer> tempList, int [] nums, int start) { list.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]); backtrack(list, tempList, nums, i + 1 ); tempList.remove(tempList.size() - 1 ); } }
Complexity:
Time complexity: O(n*2^n)
Space complexity: O(n)