创建一个列表,其中包含出现在两个列表中的那些整数

Create a list consisting of those integers that appear in both lists

问题陈述:

Design an algorithm that, given two lists of integers, creates a list consisting of those integers that appear in both lists (each integer on the final list should appear only once). Describe your algorithm in terms of a pseudocode focusing on main algorithmic tasks and not on low-level details. Analyze the running time of your algorithm. You will get full credit only if your algorithm achieves an asymptotically better worst-case performance than Θ(n^2), where n is the sum of the lengths of the two input lists

有人可以向我解释一下这个问题实际上是要我做什么吗?

我的尝试:

我的印象是这个问题告诉我做一个有两个列表的算法,idk,所以可能有两个数组,一个 A,一个 B,这些数组将填充数字,我会采取这两个列表并将它们放在一起?我使用 MergeSort 对它们进行排序(现在我认为可能没有必要)然后我使用 Merge 将两个列表实际放在一起。

问题:

有人告诉我这是错误的。我想我一定是误解了这个问题。我还使用归并排序,因为它的复杂度为 O(nlogn)。
我的回答有什么问题,我错过了什么?

问题要求您找到两个列表中的 intersection set,或者换句话说 - 一个仅包含同时出现在 A 和 B 中的元素的列表(但不包含仅出现在其中之一)。

您的算法似乎只是组合列表,因此包括仅出现在一个列表中的元素。

有几种方法可以做到:

  1. 对两个列表进行排序,然后 iterate in parallel
  2. 插入一个列表到散列table,然后迭代第二个并打印散列中的元素table(记得删除找到的元素以避免重复打印元素)
  3. 与 (2) 相同的方法,但使用树集代替,以确保 O(nlogn) 最坏情况。

我故意让实现细节含糊不清,所以你可以自己解决这个作业。

祝你好运!