我需要实现一个函数,它得到一个由n个元素组成的数组a和一个数字k作为输入,并返回一个数组,其中包含a的所有大小k的子集(每个子集将是一个数组本身)。
定义函数的类型,并为函数实现至少3个测试(使用assert)。它应该使用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; }