我正在写一个看起来像这样的python函数
def foo(some_list):
for i in range(0, len(some_list)):
bar(some_list[i], i)
因此它被称为
x = [0, 1, 2, 3, ... ]
foo(x)
我以为列表的索引访问权限为O(1)
,但是很惊讶地发现对于大型列表,这比我预期的要慢得多。
那么,我的问题是如何实现python列表,以及以下代码的运行时复杂度是多少?
list[x]
list.pop()
list.pop(0)
list.append(x)
对于额外的信用,剪接或任意弹出。
在python
Wiki上
有一个非常详细的表格,可以回答您的问题。
但是,在您的特定示例中,应使用enumerate
它在循环中获取可迭代的索引。像这样:
for i, item in enumerate(some_seq):
bar(item, i)
问题内容: 我已经看到了此页面 https://wiki.python.org/moin/TimeComplexity, 但是我没有看到列表中的函数。什么是时间的时间复杂度的? 我对时间的实验表明,它适用于较大的尺寸。有人可以确认吗? timeit反转大小列表的时间 问题答案: 是的,您是对的,它是O(n),其中n- 列表长度。在此处查找更多信息:https : //www.ics.uci.edu
比方说MD5或SHA-1?这两者的时间复杂度是多少?我试图在网上找到它,但它非常有限,我得到的只是它们都是O(n)。有人能进一步启发我吗?也许给我一个最坏的情况和最好的情况?
有人能告诉我函数的复杂性是什么吗?为什么?谢谢 我认为复杂性是:“O(nlog n)”
好的,第一个for循环显然是。第一个迭代是,第二个迭代是。我想是不是就像那个次数?这意味着。我说对了吗? 编辑:(不是复制品)我知道大O是什么。我在一个具体的案例中询问了正确的评估。
问题内容: 我注意到python官方网站上set操作的时间复杂度表。但是我只想问一下将列表转换为集合的时间复杂度是多少, 我有点知道这实际上是一个哈希表,但是它到底是如何工作的呢?那是O(n)吗? 问题答案: 是。遍历一个列表is并将每个元素添加到哈希集is ,因此总操作为。
Leetcode问题https://leetcode.com/problems/count-binary-substrings/ 该解决方案有效,但我很难提出递归解决方案的时间复杂度。 每当循环遇到s.charAt(i)!=s.charAt(i 1)时,它都会进行递归调用以展开,直到达到基本大小写或其他部分。 因为我遍历整个字符串,所以for循环是O(n)。但是如何确定将进行的递归调用的数量,因为