Algorithm 创建一个由两个列表中出现的整数组成的列表
问题陈述: 设计一个算法,给定两个整数列表,创建一个列表 由两个列表中出现的整数组成(每个整数 在最终列表中仅显示一次)。请用中文描述您的算法 伪代码的术语,侧重于主要算法任务,而不是 低级细节。分析算法的运行时间。你 只有当您的算法达到渐近的 比Θ(n^2)更好的最坏情况性能,其中n是 两个输入列表的长度 有人能解释一下这个问题到底要我做什么吗 我的尝试: 我的印象是这个问题告诉我做一个有两个列表的算法,idk,所以可能有两个数组,一个a,一个B,这些数组将被数字填充,我会把这两个列表放在一起?我使用MergeSort对它们进行排序(现在我认为可能没有必要这样做),然后使用Merge将这两个列表实际放在一起 问题: 有人告诉我这是错误的。我想我一定是把这个问题说错了。我还使用了合并排序,因为它是O(nlogn)。Algorithm 创建一个由两个列表中出现的整数组成的列表,algorithm,sorting,time-complexity,computer-science,Algorithm,Sorting,Time Complexity,Computer Science,问题陈述: 设计一个算法,给定两个整数列表,创建一个列表 由两个列表中出现的整数组成(每个整数 在最终列表中仅显示一次)。请用中文描述您的算法 伪代码的术语,侧重于主要算法任务,而不是 低级细节。分析算法的运行时间。你 只有当您的算法达到渐近的 比Θ(n^2)更好的最坏情况性能,其中n是 两个输入列表的长度 有人能解释一下这个问题到底要我做什么吗 我的尝试: 我的印象是这个问题告诉我做一个有两个列表的算法,idk,所以可能有两个数组,一个a,一个B,这些数组将被数字填充,我会把这两个列表放在一起
我的答案有什么问题,我遗漏了什么?问题要求您找到两个列表中的一个,或者换句话说,一个仅包含同时出现在a和B中的元素(但不包含仅出现在其中一个列表中的元素)的列表 看起来您的算法只是组合了列表,因此包含了只出现在一个列表中的元素 有几种方法可以做到这一点:
祝你好运 “…创建一个由两个列表中出现的整数组成的列表…”对我来说似乎很清楚。返回的列表应仅包含在两个输入列表中至少存在一次的数字。我会建议一种解决方案,对两个输入列表进行排序(可能是
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)