【发布时间】:2019-09-19 17:05:10
【问题描述】:
我想在 javascript 中创建一个排列函数,它可以非常快速地找到数组的所有排列,以及它之前的每个长度(我将给出一个进一步解释的示例)。它需要尽可能快速和高效,并且不应该有任何重复。例如,该函数将输入一个类似于
的列表[0, 1, 2]
预期的输出是
[[0], [1], [2], [0, 1], [0, 2], [1, 2], [1, 2, 3]]
数组中不会有任何重复项(例如 [0, 0] 不起作用),并且交换的值也不应该存在([1, 0] 和 [0, 1] 都不会'不在那里。只有其中一个)。
我查看了this question 和this question,但仍然无法得到我想要的。
最重要的是,这需要尽可能高效(尽可能缩短执行时间)
【问题讨论】:
-
@PatrickRoberts 我已经尝试了我发布的两个链接。
-
but am still unable to get what I wanted。在您的案例中,他们未能解决什么问题?要具体和详细。您的问题普遍缺乏明显的努力,因为您没有提出任何具体要求。 “尽可能高效”并不具体。您试图满足的具体时间限制是什么?除此之外就是浪费在优化上。 -
@PatrickRoberts 太慢了。我必须运行它的次数,然后检查结果以使其成为我想要的那样花费了太长时间
-
根据您的评论和您的问题,我唯一能做出的假设是您说生成
[[0], [1], [2], [0, 1], [0, 2], [1, 2], [1, 2, 3]]太慢了。我觉得这很难相信。 -
@PatrickRoberts 我做了一个较小的例子,如果有 6 位数字,则需要更长的时间。如果有更多,则需要更长的时间。等等。