【发布时间】:2015-01-06 21:10:00
【问题描述】:
我有两个列表(['a', 's', 'f', 'f', 's'], ['f', 'f', 'a', 's'])。所需的输出是['a','s','f','f']。输出应该给出两个列表的交集。输出列表中的字符排列是按照第一个列表['a', 's', 'f', 'f', 's']中出现的顺序。
如何在 python 中实现它?我已经在 N ** 2 次中完成了此操作。是否有可能在 N 时间内做到这一点?
我目前的解决方案:
【问题讨论】:
-
那么您目前的解决方案是什么?
-
因为骗子不关心
O(N),这似乎是这个问题的关键部分 -
老实说,我认为你不能低于 O(NlogN)。我们会看到答案
-
这不是链接问题的副本。这种情况包括订购,另一种不包括。
-
创建计数器是 O(N) 每个(你需要迭代每个列表),集合交集与常量集合查找是线性的,所以你最多得到 3*N。