创建一个列表,其中包含出现在两个列表中的那些整数
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 中的元素的列表(但不包含仅出现在其中之一)。
您的算法似乎只是组合列表,因此包括仅出现在一个列表中的元素。
有几种方法可以做到:
- 对两个列表进行排序,然后 iterate in parallel
- 插入一个列表到散列table,然后迭代第二个并打印散列中的元素table(记得删除找到的元素以避免重复打印元素)
- 与 (2) 相同的方法,但使用树集代替,以确保 O(nlogn) 最坏情况。
我故意让实现细节含糊不清,所以你可以自己解决这个作业。
祝你好运!
问题陈述:
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 中的元素的列表(但不包含仅出现在其中之一)。
您的算法似乎只是组合列表,因此包括仅出现在一个列表中的元素。
有几种方法可以做到:
- 对两个列表进行排序,然后 iterate in parallel
- 插入一个列表到散列table,然后迭代第二个并打印散列中的元素table(记得删除找到的元素以避免重复打印元素)
- 与 (2) 相同的方法,但使用树集代替,以确保 O(nlogn) 最坏情况。
我故意让实现细节含糊不清,所以你可以自己解决这个作业。
祝你好运!