Skip to content

78 子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集

示例 1:

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

nums 中的所有元素 互不相同

题解

这里需要记录递归树每一次的结果。所以results需要在递归顶部写。

javascript
var subsets = function(nums) {
    var results = []
    var subsetsInner = function(nums, index, result) {
        //每一次都记录结果,而不是到叶子节点或者递归结束
        results.push(result)
        //终止条件可以不用
        if (index === nums.length) {
            return
        }
        for(let i=index;i<nums.length;i++) {
            subsetsInner(nums, i+1, [...result, nums[i]])
        }
    }
    subsetsInner(nums, 0, [])

    return results
};

上次更新于: