美文网首页
JavaScript - 子集1(回溯法)

JavaScript - 子集1(回溯法)

作者: ElricTang | 来源:发表于2020-07-28 10:46 被阅读0次

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
    说明:解集不能包含重复的子集。
    示例:

    输入: nums = [1,2,3]
    输出:
    [
     [3],
     [1],
     [2],
     [1,2,3],
     [1,3],
     [2,3],
     [1,2],
     []
    ]
    

    完整代码:

    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var subsets = function(nums) {
        let arr = nums.sort((m, n)=> m - n);
        let res = [];
    
        function def(n, path) {
            for (let i = 0; i < n.length; i++) {
                let curPath = [...path, n[i]];
                let copy = n.slice(i + 1);
                
                res.push(curPath);
                if (copy.length > 0) {
                    def(copy, curPath);
                }
            }
        }
    
        def(arr, []);
        return [...res, []];
    };
    

    相关文章

      网友评论

          本文标题:JavaScript - 子集1(回溯法)

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