Возьмите следующую программу на Python, которая "отфильтровывает" banned_fruit
из fruits
:
banned_fruit = {"apple", "orange", "grape"} # always size = 3
fruits = ["banana", "apple", "blueberry", "kiwi", "orange"] # size = N
good_fruit = []
for fruit in fruits: # O(N)
if fruit not in banned_fruit: # O(1) average case, worst case O(3) = O(1) ?
good_fruit.append(fruit)
print(good_fruit) # Output: ['banana', 'blueberry', 'kiwi']
Мой вопрос Какова сложность времени наихудшего случая извышеуказанная программа?Что меня смущает, так это строка:
if fruit not in banned_fruit:
Если banned_fruit
- это набор питонов, то, насколько я понимаю, он может иметь сложность времени в худшем случае O(K)
, где K
- этодлина набора banned_fruit
.Но если длина набора banned_fruit
всегда постоянна (т. Е. 3), это будет означать, что наихудшим случаем будет O(1)
, поэтому моя общая программа будет иметь сложность по времени O(N)
, или янужно учитывать время поиска набора, делая мою сложность времени O(NK)
?