我有以下 Python 代码,a 和 b 是列表(我知道这不是获取交集的最佳方式):
def get_intersection(a, b):
a = set(a)
b = set(b)
c = sorted(list(a&b))
return c
我们称len(a) - m和len(b) - n,因为没有关于a和b的附加信息。那么给定代码的时间复杂度是O(m) + O(n) + O(m * n) + O((m + n) * log(m + n))。
我肯定可以缩短O(m)和O(n),因为它们远小于O(m * n),但是对于O((m + n) * log(m + n))该怎么办呢?
我如何比较O(m * n)和O((m + n) * log(m + n))? 我应该在最终评估中保留O((m + n) * log(m + n))吗?
m
和n
不是独立的组件。您合并的输入大小只是两个参数的累积大小。 - chepnerc = sorted(a&b)
也可以;sorted
返回一个列表,但可以对任何可迭代对象进行排序。 - chepner