【发布时间】:2020-04-21 10:44:19
【问题描述】:
假设我有一个简单的数组["apple", "banana", "lemon", "mango"];。
现在这个数组最简单的手动排列,比如说选择3,重复是:
let array = ["apple", "banana", "lemon", "mango"];
for (let i = 0; i < array.length; i++)
for (let j = 0; j < array.length; j++)
for (let k = 0; k < array.length; k++)
console.log(`${array[i]} ${array[j]} ${array[k]}`);
同样,现在组合这个,选择3,不重复就是:
let array = ["apple", "banana", "lemon", "mango"];
for (let i = 0; i < array.length - 2; i++)
for (let j = i + 1; j < array.length - 1; j++)
for (let k = j + 1; k < array.length; k++)
console.log(`${array[i]} ${array[j]} ${array[k]}`);
现在我想知道,是否有类似的简单手动生成方法:
- 没有重复的排列
- 重复组合
基本上是与上述示例类似的最简单方法,无需递归或复杂迭代 - 类似于生成其他两个变体的方法。
【问题讨论】:
-
您如何定义“简单”?这似乎是一个非常广泛的问题。
-
认知简单。像上面的例子那样简单的 for 循环,没有递归或复杂的迭代。本质上,如果有一种类似的方式来生成使用类似方法提到的其他两个。
-
对不起,我不太明白你的意思。还不够清楚吗?
标签: javascript arrays algorithm combinations permutation