我试图计算 count() 函数的时间复杂度。
例如,如果有一个列表 [1, 2, 2, 3]
和 [1, 2, 2, 3].count(2)
被使用。
我无休止地搜索并查看了 这里 的 Python wiki,但它不在那里。
我最接近找到答案的是 这里,但复杂性字段恰好是空的……有人知道答案是什么吗?
原文由 SW Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议
我试图计算 count() 函数的时间复杂度。
例如,如果有一个列表 [1, 2, 2, 3]
和 [1, 2, 2, 3].count(2)
被使用。
我无休止地搜索并查看了 这里 的 Python wiki,但它不在那里。
我最接近找到答案的是 这里,但复杂性字段恰好是空的……有人知道答案是什么吗?
原文由 SW Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
深入了解 CPython 源代码并访问
Objects/listobject.c
,您将在其中找到count()
方法的源代码。它看起来像这样:它所做的是简单地遍历列表中的每个
PyObject
,如果它们在丰富比较中相等(参见 PEP 207 ),则递增一个计数器。该函数只是返回这个计数器。最后,
list_count
的时间复杂度为O(n)。只要确保你的对象没有__eq__
时间复杂度高的函数,你就安全了。