const subsetsWithDup = function (nums) {
// 结果集
let res = []
function backtracking(startIndex, path) {
// 将单个结果添加到结果集,扩展运算是为了避免结果集被改变,在这是深拷贝
res.push([...path])
// 遍历nums,i下标等于startIndex则是为了避免重复
for (let i = startIndex; i < nums.length; i++) {
// 将当前值加入路径中
path.push(nums[i])
// 起始下标+1,取出下一个数字
backtracking(i + 1, path)
// 回溯
path.pop()
}
}
backtracking(0, [])
return res
};
console.log(subsetsWithDup([1,2,3]))
交集
function intersect(arr1, arr2) {
let set = new Set(arr1);
let result = [];
for (let i = 0; i < arr2.length; i++) {
if (set.has(arr2[i])) {
result.push(arr2[i]);
}
}
return result;
}
并集
function union(arr1, arr2) {
return [...new Set([...arr1, ...arr2])];
}