【Leetcode】78. 子集

52 阅读1分钟

leetcode-78.png

题目简述:给定的数组里面找出所有组合
这里的递归,就没有return 跳出的地方了,直接遍历所有可能性,整个树都递归完

var subsets = function (nums) {
    let res = []
    var backtrack = function (start, one) {
        if (one.length <= nums.length) {
            res.push([...one])
        }
        for (let i = start; i < nums.length; ++i) {
            one.push(nums[i])
            backtrack(i + 1, one)
            one.pop()
        }
    }
    backtrack(0, [])
    return res
};

既然没有跳出的地方,那么就不需要if的判断了,最大的数组也就是nums的数组长度,直接删除if的判断,简洁代码

var subsets = function (nums) {
    let res = []
    var backtrack = function (start, one) {
        res.push([...one])
        for (let i = start; i < nums.length; ++i) {
            one.push(nums[i])
            backtrack(i + 1, one)
            one.pop()
        }
    }
    backtrack(0, [])
    return res
};