【发布时间】:2019-02-24 02:27:43
【问题描述】:
假设我有以下数组:
array = [0, 1, 2, ... , n]
如何找到一个集合,使得集合中的对都是唯一且不重复的元素?
这意味着:
• (x, y) = (y, x) 所以如果 (x, y) 在集合中,则 (y, x) 不会在集合中,反之亦然
• 如果某个元素已被使用,则不能再次使用它。
例如:如果 (1,2) 在集合中,则集合中不可能有一对具有 1 或 2。
上下文: 我正在创建一个记忆游戏,将硬币放在 2n 个元素的板上。我希望游戏的每次迭代都将元素放置在板上的随机空间中。
例如:
Suppose I have: [A, B, C, D, E, F]
Since [A, B, C, D, E, F] is length 6, then the board will consist of 12 elements.
My board will look like the following such that the elements were randomly placed:
A B C D
C A F B
E F E D
坦率地说,如果不使用 O(n^2) 蛮力方法,我不知道如何解决这个问题。我认为可能还有另一种更有效的算法。
【问题讨论】:
-
分享您的代码以显示已尝试,
-
@SagarAgrawal 我的想法是我不知道从哪里开始,我不是在寻找一个完整的算法,而是从哪里开始或者是否有可能的想法
-
如果您正在创建记忆游戏,您可以简单地创建两个输入数组。从数组中随机逐出元素并将它们随机放置在 3 个输出数组中。
-
创建 [A, A, B, B, C, C, D, D, E, E, F, F] 并随机播放?
-
@TryKhov:没问题 :) 请注意,您可以就地进行随机播放,因此只有一个数组。
标签: javascript algorithm coding-efficiency set-theory