Какова будет сложность кода ниже?
На мой взгляд, это будет O(N).
Даже если у нас есть срезы массива внутри для l oop, который принимает O(K)
в python, он всегда будет работать в течение постоянного времени, т.е. равен pairLength
. Так, например, если длина строки, то есть st
равна 6, а pairLength
равна 3, общая сумма, которую она запустит, будет 6*3=12
раз. Точно так же, если у нас есть st
размера 12, он будет выполняться 36 раз. Здесь путаница, мы могли бы также сказать это как O(N*M)
, но M всегда постоянен (однажды установленный, т.е. pairLength), поэтому мы можем рассматривать его как O(N)
. Правильно ли это?
edit: Предположим, что pairLength
постоянно и равно 3 постоянно. Тогда сложность будет O (N)?
def writeAllCombinations(st, pairLength):
for i in range((len(st)-pairLength)+1):
print(st[i:i+pairLength]) # could also be done using inner loops and concat
# calling function
writeAllCombinations("HelloWorld", 3)