如何创建一个包含非重复而非随机数的数组?

时间:2019-06-05 07:45:39

标签: javascript algorithm tree

我想在JavaScript中创建一个方法,该方法可以通过使用Tree结构生成包含非随机和非重复数字的数组。

假设名为permutation()的方法,我只是简单地使用

permutation(3)

我将得到一个可以迭代的数组,每个数组都是

012 021 120 102 201 210

如果将数字3更改为5,它将生成一个数组

012345 012354 etc...

然后我发现我可以使用树形结构来构建这种数组,如下所示:

root:     0      1      2 
        ↓   ↓  ↓   ↓  ↓   ↓
depth1: 1   2  0   2  1   0
        ↓   ↓  ↓   ↓  ↓   ↓
depth2: 2   1  1   0  0   1

然后我遍历所有节点以获得结果。

数字增加时一样

root:           0               1   2   3   4   5   6....
        ↓   ↓   ↓   ↓   ↓   ↓
depth1: 1   2   3   4   5   6

etc....

问题是我不知道如何用JavaScript构造这样的树?我不知道这些问题叫什么名字。

1 个答案:

答案 0 :(得分:0)

您可以采用数组并为每个剩余项获取一个子树。

function createTree(array) {
    return array.map((v, i, a) => array.length === 1
        ? [v]
        : [v, createTree([...a.slice(0, i), ...a.slice(i + 1)])]
    );
}

var result = createTree([0, 1, 2]);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关问题