Leetcode刷题(第78题)——子集

x33g5p2x  于2022-03-05 转载在 其他  
字(0.5k)|赞(0)|评价(0)|浏览(201)

一、题目

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

二、示例

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

输入:nums = [0]
输出:[[],[0]]

三、思路

本题思路:使用递归。不是特别难的递归,具体看下面代码

四、代码

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var subsets = function(nums) {
    let result = []
    const rec = (arr) => {
        if(arr.length <= nums.length){
            result.push(arr)
        }
        
        nums.forEach(item => {
            if(arr.includes(item)) {
                return
            }
            if(arr.length === 0 || (arr.length > 0 && item > arr[arr.length - 1])){
                rec(arr.concat(item))
            }
        })
    }
    rec([])
    return result
};

五、总结

相关文章