当前位置: 首页 > 知识库问答 >
问题:

leetcode子集javascript代码返回空数组

袁飞鹏
2023-03-14

在我的代码中,list数组的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;
}

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

共有1个答案

利稳
2023-03-14

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

要获得所有单个数组,您需要获得一个带有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; }
 类似资料:
  • 我有一个注释定义如下: 我是这样使用它的: 现在,我有了第二个接口,它扩展了第一个: 我想获得MySecondInterface的所有注释,这意味着我也想获得超级接口上定义的注释。 我所尝试的: ######################################################################################### 结果是: 在所有情况下,

  • 我使用GATE API和java代码,并试图对文档文本运行一个已知的JAPE规则,但不幸的是,我无法得到适当的结果。我的代码如下:

  • 问题内容: 我正在使用JDBC来实现非常简单的数据库连接。 我已经创建了连接/语句并执行了查询。我在调试器中检查语句的查询对象,以确认它正在发送正确的查询。然后,我再次检查了数据库中的查询(直接从调试器复制),以确保其返回数据。但是,返回的结果集在.next()上给出false 这里有我遗漏的常见陷阱吗? 还有myDB类(一个简单的包装程序,使我可以将连接/语句代码放入任何项目中) 编辑:根据建议

  • 问题内容: 我正在使用Selenium2对我的网站进行一些自动化测试,并且希望能够获得一些Javascript代码的返回值。如果我的网页中有Javascript函数,并且想调用该函数并将返回值获取到我的Python代码中,该怎么做? 问题答案: 要返回值,只需在传递给方法的字符串中使用JavaScript关键字,例如

  • 全组合 问题描述 这道题是 LeetCode 78 题 - 子集。 从不含重复元素的 n 个元素中,选择 0~n 个元素,组成一个子集,找出所有的子集(幂集)。 解法一:二进制转换法 如果 n 个元素都不相同,可以使用二进制转换法求得所有的子集。将一个数从 0 开始,每次加 1,一直加到 $2^n-1$,其二进制表示从 000...000 到 111...111,每一位表示对应元素是否被选择。这种

  • 我试图通过require($page.“.php”)传递一个页面;但是,它只是从页面返回代码。变量$page连接到products页面。代码如下所示。...索引页... 产品列表 第名称第价格 产品ORDER BY name ASC”;$Query=mysql_query($SQL);而($ROW=mysql_fetch_array($query)或die(mysql_error())){?><?