arrays - Leetcode 的 Subsets 问题解决方案不起作用我不知道为什么
问题描述
**
给定一个包含唯一元素的整数数组 nums,返回所有可能的子集(幂集)。
**
解决方案集不得包含重复的子集。以任何顺序返回解决方案。
Example 1:
Input: nums = [1,2,3]
Output: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
Example 2:
Input: nums = [0]
Output: [[],[0]]
我的解决方案 -
let subsets = function(nums) {
let output = []
function backtrack(nums, subset = [], index = 0) {
if(index === nums.length) {
output.push(subset)
return
}
// ith element is not considered
backtrack(nums, subset, index + 1)
// ith element is considered
subset.push(nums[index])
backtrack(nums, subset, index + 1)
subset.pop()
}
backtrack(nums)
return output
};
console.log(subsets([1,2,3]))
Output:
[
[],
[],
[],
[],
[],
[],
[],
[],
]
Expected Output:
[
[],
[1],
[2],
[3],
[1,2],
[1,3],
[2,3],
[1,2,3]
]
我不知道为什么在回溯函数中将子集推入其中时输出数组为空。
解决方案
问题在这里:
if(index === nums.length) {
output.push(subset)
return
}
当您按下 时subset
,您正在传递参考。运行完代码后,output
数组中的每个子集都在引用 []。这就是为什么你要返回 [] 的数组。相反,您应该复制这些值然后推送它。
output.push([...subset])
推荐阅读
- eclipse - 每当我按等于然后按空格时,Eclipse 就会发出噪音,如何解决这个问题?
- javascript - 无法在“窗口”上执行“获取”:使用 GET/HEAD 方法的请求不能有正文
- java - 使用 docker-compose 在 mysql 中创建特定模式
- discord.js - Discord.js 承诺 {
} 结束 - c# - 从 USB 大容量存储设备 WIM 获取驱动器号
- python - 为什么我不能设置client.intents的属性?
- c# - 从字符串中删除字符的简单方法?
- spring - 如何在运行时刷新spring应用上下文?
- javascript - TypeError:无法读取 ReactJs 中未定义的属性“映射”?
- html - 如何在具有多个部分的角度上制作简单的视差效果