美文网首页数据结构和算法分析
js获取数组的所有子集

js获取数组的所有子集

作者: AvenKe | 来源:发表于2020-01-08 22:53 被阅读0次

    使用javascript获取一个数组的所有子集,比如:
    [1, 2, 3] 的所有子集是:
    [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

    解题思路:

    假设res是一个二维空数组[[]], 遍历原数组arr,给当前结果res中的每一个子数组append arr[i],得到tempRes[[1]], 再把得到的结果加入到res当中,res变成[[], [1]],以此类推。

    function allSubsets(arr){
        let res = [[]];
        for(let i = 0; i < arr.length; i++){
            const tempRes = res.map(subset => {
                const one = subset.concat([]);
                one.push(arr[i]);
                return one;
            })
            res = res.concat(tempRes);
        }
        return res;
    }
    allSubsets([1,2,3]); // [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
    

    相关文章

      网友评论

        本文标题:js获取数组的所有子集

        本文链接:https://www.haomeiwen.com/subject/fphsactx.html