JavaScript 中给出的示例:
假设我们有两个数组 [0,0,0] 和 [1,1,1]。生成这两个数组可以组合的所有可能方式的算法是什么。示例:
mergeEveryWayPossible([0,0,0],[1,1,1])
// [ [0,0,0],[1,0,0], [0,1,0], [0,0,1], [1,1,0], [0,1,1], [1,0,1], [1,1,1] ]
将数组合并成一个包含所有可能组合的数组。这与寻找笛卡尔积不同。
我也不确定这种组合叫什么。如果算法或技术有名称,请分享。
最佳答案
您可以将值转换成这种格式的数组
[
[0, 1],
[0, 1],
[0, 1]
]
然后通过迭代外部和内部数组构建一个新的结果集。
var data = [[0, 0, 0], [1, 1, 1]],
values = data.reduce((r, a, i) => (a.forEach((b, j) => (r[j] = r[j] || [])[i] = b), r), []),
result = values.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 将两个数组合并为所有可能组合的数组的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553575/