Вступить в клуб →
лёгкаявопросСложность и стоимость структур данных

Вложенный цикл с ранним возвратом: лучший и худший случай

Дана функция:

def has_pair(nums, target):
    for i in range(len(nums)):
        for j in range(i + 1, len(nums)):
            if nums[i] + nums[j] == target:
                return True
    return False

Как правильно описать сложность этой функции по времени?

  • O(n^2) в любом случае: два вложенных цикла всегда дают квадрат
  • O(1) в лучшем случае и O(n^2) в худшем
  • O(n) в лучшем случае и O(n^2) в худшем: ранний `return` не может сработать раньше, чем внутренний цикл при i = 0 дойдёт до конца
  • O(n log n) в среднем: внутренний цикл каждый раз короче предыдущего

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела