Python-курс
🧩 Алгоритмические паттерны

Хеш-множества и словари для O(n)

Когда set и dict превращают перебор в один проход.

~45 минСредний 3 урока

Память вместо перебора

Самый частый приём ускорения на собеседовании — обменять память на скорость с помощью set или dict. Проверка «есть ли элемент в множестве» занимает в среднем O(1), тогда как поиск в спискеИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list. — O(n). Это превращает квадратичные решения в линейные.

Каноничный пример — задача Two Sum на неотсортированном массиве: для каждого числа проверяем, встречали ли мы уже его «дополнение» до target. Дополнения храним в словареКоллекция пар «ключ → значение»: {"a": 1}. Быстрый доступ по ключу. По-английски dict. «значение → индексНомер позиции элемента в последовательности. В Python нумерация с нуля: первый элемент — индекс 0.».

two-sum-hash.py

За один проход мы и заполняем словарь, и проверяем дополнение — итого O(n). Сравните с двойным циклом O(n²): на больших массивах разница колоссальна. И, в отличие от двух указателей, массив не нужно сортировать.

Шаг 1 из 8