您可以使用Array.flatMap返回n个选择Java的k个组合吗? [英] Can you return n choose k combinations in Javascript using Array.flatMap?
本文介绍了您可以使用Array.flatMap返回n个选择Java的k个组合吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,这是5选择2:
var array = [0,1,2,3,4];
var result = array.flatMap(
(v, i) => array.slice(i+1).map(w => [v, w])
);
console.log(result);
使用这种方法,我怎么能5选择3?
How would I be able to do 5 choose 3 using this method?
推荐答案
只需添加另一层嵌套:
var array = [0,1,2,3,4];
var result = array.flatMap((v, i) =>
array.slice(i+1).flatMap((w, j) =>
array.slice(i+1+j+1).map(u =>
[v, w, u]
)
)
);
console.log(result);
在这一点上,使用递归可能更容易:
At this point, it might be easier to do with recursion though:
function choose(arr, k, prefix=[]) {
if (k == 0) return [prefix];
return arr.flatMap((v, i) =>
choose(arr.slice(i+1), k-1, [...prefix, v])
);
}
console.log(choose([0,1,2,3,4], 3));
这篇关于您可以使用Array.flatMap返回n个选择Java的k个组合吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文