JavaScript - 子集1(回溯法)

给定一组不含重复元素的整数数组 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(回溯法))