“ in”(包容操作员)的时间复杂度


问题内容

我只是想知道什么时候理解一种算法的时间复杂度,如下所示。

对于python列表,如果我们有一个for循环对其进行迭代,然后进行遏制检查,则其时间复杂度为O(n ^ 2)。

我知道两者都是O(n)(或者我认为),所以让它们彼此嵌套会使其变为O(n ^ 2)吗?

我认为,如果此“列表”实际上是一个列表,则下面代码的时间复杂度为O(n ^ 2)。但是如果它是字典,它将是O(n),因为查找是O(1)。那是对的吗?

感谢您的任何帮助!

for element in list:
    if x in list:

问题答案:

您的分析是正确的。

  • 列表包含为O(n),执行O(n)次操作O(n)次为O(n 2)。
  • 字典查找为O(1),执行O(1)操作O(n)次为O(n)。