创建一个列表,其中包含两个列表中显示的整数

时间:2015-11-03 21:32:55

标签: algorithm sorting time-complexity computer-science

问题陈述:

  

设计一种算法,给定两个整数列表,创建一个列表   由两个列表中出现的整数组成(每个整数   在最终列表上应该只出现一次)。在中描述您的算法   关注主要算法任务而不是主要算法任务的伪代码   低级细节。分析算法的运行时间。您   只有当你的算法渐近渐近时才会获得完全的功劳   比Θ(n ^ 2)更好的最坏情况性能,其中n是的总和   两个输入列表的长度

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

我的尝试:

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

问题:

我被告知这是错误的。我想我一定是在混淆这个问题。我也使用合并排序,因为它的O(nlogn)。
我的答案有什么问题,我错过了什么?

1 个答案:

答案 0 :(得分:0)

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

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

有几种方法可以做到:

  1. 对两个列表进行排序,然后iterate in parallel
  2. 将一个列表插入哈希表,然后迭代哈希表中的第二个和打印元素(记住删除找到的元素以避免打印元素两次)
  3. 与(2)相同,但使用树集代替,以确保O(nlogn)最坏的情况。
  4. 我故意将实施细节模糊不清,所以你可以自己解决这个任务。

    祝你好运!