2015-03-20 6 views
-1

Прошу прощения, если мой вопрос не подходит для этого веб-сайта, но это единственное место, которое я знаю, которое может ответить на вопросы, связанные с информатикой.Класс сложности функции

Для моей викторины нам сказали рассчитать и упростить класс сложности функции. Я понимаю большинство понятий и всего, но не могу понять, почему O(1) неверно для строки aset = set(alist). Правильный ответ должен быть O(N), но я не понимаю, почему это так.

Вот полная функция:

def sum_to_b(alist,asum): 
    aset = set(alist) 
    for v in alist: 
     if asum-v in aset: 
      return (v,asum-v) 
    return None 
+0

Некоторая важная информация отсутствует в этом вопросе. Можете ли вы опубликовать исходный код функции здесь? –

+0

@ AndersonGreen Done. – Tyler

ответ

2

Вам нужно перебирать каждый элемент «ALIST» ровно один раз (при условии, что регулярное итерацию), чтобы построить набор «Асет».

+0

Это сделано как встроенная вещь для python? Он может перебирать каждый элемент, не говоря об этом? – Tyler

+0

Да, встроенное преобразование из списка в набор – denfromufa

+1

@Tyler: Встроенные функции, такие как 'set', могут делать все, что вы могли бы сделать с помощью функции, которую вы написали, и вы могли бы написать функцию' set', которая выполняет итерацию над своим аргументом. – user2357112