90.子集II
链接:90.子集II
难度:Medium
标签:位运算、数组、回溯
简介:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
题解 1 - typescript
- 编辑时间:2021-03-31
- 执行用时:108ms
- 内存消耗:44.8MB
- 编程语言:typescript
- 解法介绍:二分查找。
function subsetsWithDup(nums: number[]): number[][] {
  const set = new Set<string>();
  const ans: number[][] = [[]];
  const find = (arr: number[]) => {
    const len = arr.length;
    if (len === 0) return;
    const str = arr.sort((a, b) => a - b).join(':');
    if (set.has(str)) return;
    set.add(str);
    ans.push(arr);
    for (let i = 0; i < len; i++) find([...arr.slice(0, i), ...arr.slice(i + 1)]);
  };
  find(nums);
  return ans;
}