javascript - leetcode 子集 javascript 代码返回空数组

标签 javascript algorithm

我是算法新手,有一个关于 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;
}

任何想法都会很棒!谢谢!

最佳答案

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

要获取所有单个数组,您需要使用 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; }

关于javascript - leetcode 子集 javascript 代码返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48196360/

相关文章:

javascript - Reactjs,父组件,状态和 Prop

javascript - 从映射对象中删除空数组

java - 不确定为什么 Java mergesort 算法偶尔会失败

python - 导航网格

java - 根据资源包 key 的存在有条件地显示 HTML block

Javascriptcore ios调用类方法

javascript - Polyfill 用于列出 Header 实例的 HTTP header

algorithm - 构造任何具有度约束的二分图

java - Java 上的图形/数据结构算法

c# - 使用校验和进行文件比较