Algorithm 创建一个由两个列表中出现的整数组成的列表

Algorithm 创建一个由两个列表中出现的整数组成的列表,algorithm,sorting,time-complexity,computer-science,Algorithm,Sorting,Time Complexity,Computer Science,问题陈述: 设计一个算法,给定两个整数列表,创建一个列表 由两个列表中出现的整数组成(每个整数 在最终列表中仅显示一次)。请用中文描述您的算法 伪代码的术语,侧重于主要算法任务,而不是 低级细节。分析算法的运行时间。你 只有当您的算法达到渐近的 比Θ(n^2)更好的最坏情况性能,其中n是 两个输入列表的长度 有人能解释一下这个问题到底要我做什么吗 我的尝试: 我的印象是这个问题告诉我做一个有两个列表的算法,idk,所以可能有两个数组,一个a,一个B,这些数组将被数字填充,我会把这两个列表放在一起

问题陈述:

设计一个算法,给定两个整数列表,创建一个列表 由两个列表中出现的整数组成(每个整数 在最终列表中仅显示一次)。请用中文描述您的算法 伪代码的术语,侧重于主要算法任务,而不是 低级细节。分析算法的运行时间。你 只有当您的算法达到渐近的 比Θ(n^2)更好的最坏情况性能,其中n是 两个输入列表的长度

有人能解释一下这个问题到底要我做什么吗

我的尝试:

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

问题:

有人告诉我这是错误的。我想我一定是把这个问题说错了。我还使用了合并排序,因为它是O(nlogn)。

我的答案有什么问题,我遗漏了什么?

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

看起来您的算法只是组合了列表,因此包含了只出现在一个列表中的元素

有几种方法可以做到这一点:

  • 然后对两个列表进行排序
  • 在哈希表中插入一个列表,然后迭代第二个列表并打印哈希表中的元素(记住删除找到的元素以避免打印元素两次)
  • 方法与(2)相同,但使用树集来确保O(nlogn)最坏情况
  • 我故意把实现细节含糊不清,这样你就可以自己解决这个任务了


    祝你好运

    “…创建一个由两个列表中出现的整数组成的列表…”对我来说似乎很清楚。返回的列表应仅包含在两个输入列表中至少存在一次的数字。我会建议一种解决方案,对两个输入列表进行排序(可能是
    O(n lgn)
    ,除非您可以保证输入有其他事实),然后对两个列表进行线性扫描以找到交集(
    O(n)
    ,将整个算法保留在
    O(n lgn)
    )。非常感谢您,我似乎误解了这个问题。通过使用您提供的方法1,我可以在第一个列表上使用合并排序,这将给我O(n),然后我可以在第二个列表上使用合并排序,这将给我O(n),然后我可以迭代并行,这也将是O(n),所以我将最终得到O(n)+O(n)+O(n)=O(n)。这听起来正确吗?@Shammy使用合并排序的排序是
    O(nlogn)