跳到主要内容

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;
}