【发布时间】:2021-10-05 23:28:19
【问题描述】:
我必须制定一个算法来匹配两个数组中的项目,我们不能先对任何一个数组进行排序,我们只能通过比较从数组 1 到数组 2 的一个项目和一个到数组 2 的项目进行匹配(比较是 )。输出是两个列表,它们具有相同的顺序。我可以想办法用 n(n+1)/2 次来解决它。目标是 nlog(n)。我一直在用头撞墙试图想办法,但我做不到。谁能给个提示?
所以要解释输入是两个数组 ex。 A = [1,3,6,2,5,4] B =[4,2,3,5,1,6] 并且输出是具有相同顺序的两个数组。您不能先单独对数组进行排序或比较同一数组中的项目。您只能比较列表中的项目,例如 A_1
【问题讨论】:
-
@don'ttalkjustcode 已编辑
-
那么 A 和 B 有相同的元素?每个都可以重复吗?
-
如果允许的话,随机化会使这变得更容易。
-
我忘记了细节,但最坏的情况 n log n 是 90 年代中期的一篇研究论文:stackoverflow.com/a/27722418/2144669。
-
@DavidEisenstat 谢谢。考虑到即使是“更简单”的论文也有 23 个看起来很复杂的页面,我很高兴我没有花时间自己想出一个最坏的情况 n log n 解决方案 :-)
标签: algorithm complexity-theory