leetcode子集javascript代码返回空数组

Sisi Qin

我是算法新手,对leetcode问题有一个愚蠢的问题。问题是要求只包含不同整数的给定数组的所有子集。

在我的代码中,列表数组的console.log提供了我想要的内容,它是一组输入子集。但这并不能传递给结果。结果返回如下内容:[[],[],[],[],[],[],[],[]]

下面是我的代码:

 const subsets = (nums) => {
    let result = []; 
    let list = [];
    
    const helper = (result, list, nums, position) => {
        for (let i = position; i < nums.length; i++) {
            list.push(nums[i]);
            helper(result, list, nums, i + 1);
            list.pop();
        }
        console.log(list) // this is what I want. but it does not pass down to result!!! 
        result.push(list);
    }

    helper(result, list, nums, 0)
    return result;
}

任何想法都太棒了!谢谢!

妮娜·斯科茨(Nina Scholz)

问题是,您将相同的数组引用推到结果集。结果,您将看到所有数组的最后一个循环的数组。

为了获得所有单个阵列,您需要获得一份Array#slice用于推送的副本

result.push(list.slice());

这将创建一个具有所有值的新数组。

const subsets = (nums) => {
    let result = []; 
    let list = [];
    
    const helper = (result, list, nums, position) => {
        for (let i = position; i < nums.length; i++) {
            list.push(nums[i]);
            helper(result, list, nums, i + 1);
            list.pop();
        }
        result.push(list.slice());
    }

    helper(result, list, nums, 0);
    return result;
}

console.log(subsets([1, 2, 3]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章