【发布时间】:2015-11-03 21:32:54
【问题描述】:
问题陈述:
设计一个算法,给定两个整数列表,创建一个列表 由出现在两个列表中的整数组成(每个整数 在最终列表上应该只出现一次)。描述你的算法 伪代码的术语侧重于主要算法任务而不是 低级细节。分析算法的运行时间。你 仅当您的算法渐近地达到 比 Θ(n^2) 更好的最坏情况性能,其中 n 是 两个输入列表的长度
有人可以向我解释这个问题实际上要求我做什么吗?
我的尝试:
我的印象是,这个问题告诉我要创建一个包含两个列表 idk 的算法,所以可能有两个数组,一个 A,一个 B,这些数组将填充数字,我会同时采用那些清单并基本上将它们放在一起?我使用 MergeSort 对它们进行排序(现在我认为这可能不是必需的)然后我使用 Merge 将两个列表实际放在一起。
问题:
有人告诉我这是错误的。我想我一定是误解了这个问题。我还使用了归并排序,因为它的 O(nlogn)。
我的答案有什么问题,我错过了什么?
【问题讨论】:
-
"... 创建一个由两个列表中出现的整数组成的列表..." 对我来说似乎很清楚。返回的列表应该只包含在两个输入列表中至少存在一次的数字。我建议对两个输入列表进行排序的解决方案(可能是
O(n lg n),除非您可以保证有关输入的其他事实),然后对两个列表进行线性扫描以找到交集(O(n),留下整体算法在O(n lg n))。
标签: algorithm sorting time-complexity computer-science