想了一个简单的面试题

我们有一个数组 ` [5,1,6] `,我们要生成所有的子组合 ` [ [ 5 ], [ 5, 1 ], [ 5, 1, 6 ], [ 5, 6 ], [ 1 ], [ 1, 6 ], [ 6 ] ] `,针对任意数组,该如何求出它的所有子组合呢?

/**
 * @param {number[]} nums
 * @return {number}
 */
var subset = function (nums) {
    let len = nums.length

    function bt(start, arr) {
        if (start >= len) return []

        let subset = []

        for (let i = start; i < len; i++) {
            let n = nums[i]
            let one = [...arr, n]
            subset.push(one)
            subset.push(...bt(i + 1, one))
        }

        return subset
    }

    let subset = bt(0, [])
    console.log(subset)
};

作者: 曾小乱

喜欢写点有意思的东西

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注