数组操作(求数组子集、交集、并集)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值