Subsets II
MediumArrayBacktrackingBit Manipulation
Solution
export function subsetsWithDup(nums: number[]): number[][] {
nums.sort((a, b) => a - b);
const subsets: number[][] = [];
function backtrack(current: number[], startIndex: number) {
subsets.push([...current]);
for (let i = startIndex; i < nums.length; i++) {
if (startIndex < i && nums[i - 1] === nums[i]) {
continue;
}
current.push(nums[i]);
backtrack(current, i + 1);
current.pop();
}
}
backtrack([], 0);
return subsets;
}