您可以使用Array.flatMap返回n个选择Java的k个组合吗? [英] Can you return n choose k combinations in Javascript using Array.flatMap?

查看:57
本文介绍了您可以使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆