我需要实现一个函数,该函数获取一个包含 n 个元素的数组 A 和一个数字 k 作为输入,并返回一个包含 A 的所有大小为 k 的子集的数组(每个子集本身就是一个数组)。
定义函数的类型,并为该函数实现至少 3 次测试(使用断言)。它应该是 Javascript/Typescript 且功能齐全
例如:FunSubsets ([1,2,3],2) => [[1,2],[1,3],[2,3]]
有什么想法吗?
最佳答案
您可以使用带有多个参数的生成器函数来生成临时结果集。
function* subsets(values, size, parts = []) {
var i;
size--;
for (i = 0; i < values.length; i++) {
if (size) {
yield* subsets(values.slice(i + 1), size, [...parts, values[i]]);
} else {
yield [...parts, values[i]];
}
}
}
console.log([...subsets([1, 2, 3], 2)]);
console.log([...subsets([1, 2, 3, 4, 5], 2)]);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 以函数方式获取子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715992/