在这里,我编写了一个程序,它将找到所有子集数组,就像数组是 一样[1, 2, 3]
,我想要像这样的输出[[], 2],, 2, , [2, 1], 3, , [3, 1], [3, 2], [3
我编写了一个表示二进制逻辑表示的程序。输出没有按预期进行。
能否请您纠正并修改该程序?
const getAllSubsets = arr => {
let n = arr.length
let add = []
for (let i = 0; i < (1 << n); i++) {
for (let j = 0; j < n; j++) {
if ((1 << j) & i) {
add.push([arr[j]])
}
}
}
return add
}
console.log(getAllSubsets([1,2,3]))
您需要两个存储阵列:一个用于所有子集,另一个用于当前子集。您的代码的整体架构将如下所示:
祝你好运!
你已经很接近了!你只是把一些东西放在了错误的地方。以下是修复方法:
allSubsets
。它将是一个子集数组。笔记:allSubsets.push(subset)
subset
subset.push(arr[j])
。您可以采用递归方法并获取具有未定义加剩余和值加剩余的数组。