Основной маршрут
От первого перебора до выбора паттерна
54 коротких урока образуют одну цепочку. Зависимости показывают, что нужно понимать, а не запрещают заглянуть вперёд.
Начать первый урокЭтап 0
Как думать о задачах
Ограничения, сложность, перебор, инварианты и тестирование.
- 01Ограничения как бюджет решенияПереводим размер входа в допустимый порядок роста до написания кода.Не начат
- 02От полного перебора к узкому местуСтроим корректный перебор, называем повторяющуюся работу и затем оптимизируем.Не начат
- 03Инварианты, граничные случаи и тестыИспользуем инвариант как доказательство и превращаем риски в тесты.Не начат
Этап 1
Инструменты языка
Практический мост к контейнерам, сортировке и рекурсии в C++ и Python.
Этап 2
Массивы, строки и хеширование
Линейные обходы, быстрый поиск, частоты и группировка.
Этап 3
Два указателя
Движение границ с доказуемо безопасным отбрасыванием вариантов.
Этап 4
Скользящее окно
Поддержание свойства непрерывного фрагмента без повторного пересчёта.
Этап 5
Префиксные техники
Накопленная информация для диапазонов и подмассивов.
Этап 6
Стек, очередь и дек
Порядок обработки и монотонные структуры.
- 01Стек: незавершённая работа и скобкиСтек хранит последнюю открытую конструкцию, которую должен закрыть следующий подходящий символ.Не начат
- 02Очередь и декДек хранит только ещё полезные элементы текущего окна и удаляет устаревшие индексы с противоположного конца.Не начат
- 03Монотонный стек и монотонный декМонотонный стек удаляет кандидата именно тогда, когда текущий элемент впервые становится для него ответом.Не начат
Этап 7
Сортировка и интервалы
Как порядок данных открывает структуру решения.
- 01Зачем сортировать перед решениемСортировка превращает поиск близкой пары среди всех пар в проверку соседей.Не начат
- 02Слияние, разбиение и гарантии сортировокMerge sort получает гарантию O(n log n), потому что делит задачу по глубине и линейно сливает каждый уровень.Не начат
- 03Интервалы, пересечения и объединениеПосле сортировки по началу достаточно сравнивать новый интервал с последним уже объединённым.Не начат
Этап 8
Бинарный поиск
Точные границы, инварианты и поиск по ответу.
- 01Точный бинарный поиск через инвариантБинарный поиск безопасно отбрасывает половину только благодаря отсортированности и явно выбранным границам.Не начат
- 02Первая и последняя подходящая позицияПоиск границы рассматривает булеву последовательность false…false,true…true, а не обязательно точное значение.Не начат
- 03Поиск по ответу и монотонный предикатЕсли допустимость ответа монотонна, можно искать минимальное допустимое значение, не строя сам ответ напрямую.Не начат
Этап 9
Связные списки
Перенаправление ссылок, слияние, разворот и циклы.
- 01Узлы, dummy и безопасное перенаправление ссылокDummy-узел убирает особый случай первой вставки, а хвост результата всегда указывает на последний уже слитый узел.Не начат
- 02Слияние, разворот и обнаружение циклаРазворот списка сохраняет следующий узел до смены стрелки, а алгоритм Флойда обнаруживает цикл по встрече указателей с разной скоростью.Не начат
Этап 10
Деревья
Обходы, рекурсивные возвраты, уровни и BST.
- 01Модель дерева и три порядка обходаПоложение обработки корня относительно рекурсивных вызовов определяет preorder, inorder или postorder.Не начат
- 02DFS дерева: что возвращает рекурсияПолезный рекурсивный вызов возвращает родителю краткое резюме поддерева, а не просто «обходит» его.Не начат
- 03BFS по уровням и выбор BFS/DFSРазмер очереди в начале итерации фиксирует границу текущего уровня и не смешивает его с детьми.Не начат
- 04Инвариант бинарного дерева поискаBST ускоряет поиск только пока каждый узел разделяет ключи на строго определённые области.Не начат
Этап 11
Куча и приоритетная очередь
Повторный доступ к экстремуму, Top K и потоки.
- 01Куча и priority queueКуча хранит частичный порядок: экстремум доступен сразу, но остальные элементы не обязаны быть полностью отсортированы.Не начат
- 02Top K, потоки и слияние источниковПри k-way merge куча хранит только текущую голову каждого источника, поэтому следующий глобальный минимум всегда находится на вершине.Не начат
Этап 12
Бэктрекинг
Перебор дерева решений с откатом и отсечениями.
- 01Дерево решений: choose → recurse → undoПерестановка выбирает следующий неиспользованный элемент; комбинация выбирает следующий индекс только справа, а подмножество допускает include/exclude.Не начат
- 02Отсечения, дубликаты и мутация состоянияВ комбинациях положительных чисел сортировка одновременно открывает безопасный break по сумме и соседний пропуск одинаковых ветвей.Не начат
Этап 13
Графы и сетки
Связность, обходы, зависимости и кратчайшие пути.
- 01Графы, списки смежности и сеткиСписок смежности хранит только существующие рёбра и делает соседей вершины доступными за время, пропорциональное её степени.Не начат
- 02DFS, компоненты и циклыНовый запуск DFS из непосещённой вершины открывает ровно одну новую компоненту связности.Не начат
- 03BFS, кратчайший путь и несколько источниковMulti-source BFS кладёт все источники в нулевой слой до старта и одним обходом находит расстояние до ближайшего из них.Не начат
- 04Зависимости и топологический порядокАлгоритм Кана удаляет только вершины без оставшихся зависимостей; неполный результат обнаруживает цикл.Не начат
- 05DSU и динамическая связностьDSU хранит каждую компоненту как дерево представителей и быстро поддерживает только объединения.Не начат
- 06Дейкстра для неотрицательных весовДейкстра всегда продолжает с наименьшей известной метки и корректен только потому, что веса неотрицательны.Не начат
Этап 14
Жадные алгоритмы
Локальный выбор только вместе с доказательством безопасности.
- 01Когда локальный выбор безопасенЖадный шаг допустим лишь тогда, когда его можно обменять на шаг из любого оптимального решения без ухудшения ответа.Не начат
- 02Сортировка + жадный выбор на интервалахЕсли нужна максимальная совместимая подборка, выбор самого раннего окончания оставляет максимум времени для будущих интервалов.Не начат
Этап 15
Основы динамического программирования
Состояние, переход, база, порядок и восстановление ответа.
- 01Определяем состояние DPМемоизация сохраняет точный ответ для каждой остаточной подзадачи и превращает повторяющееся дерево рекурсии в граф состояний.Не начат
- 02Переход, база и порядок вычисленияВ табуляции состояние вычисляют только после всех состояний, от которых зависит его переход.Не начат
- 03Take/skip, число способов, min/maxВ задаче take/skip лучший ответ на префиксе получается из явного сравнения взять текущий элемент или сохранить лучший совместимый префикс.Не начат
- 04Рюкзак и состояние подпоследовательностиВ 0/1-рюкзаке dp[w] хранит лучшую ценность при вместимости w после уже обработанных предметов, а обратный обход не даёт взять предмет повторно.Не начат
Этап 16
Двумерное и последовательностное DP
Сетки и пары последовательностей.
- 01DP по сетке и двум координатамВ монотонной сетке dp[row][col] хранит число путей до клетки из уже посчитанных верхней и левой клеток с учётом препятствий.Не начат
- 02DP по двум последовательностямДля LCS и edit distance ячейка по двум префиксам выбирает переход, который точно соответствует цели: длине общей подпоследовательности или числу правок.Не начат
Этап 17
Trie
Практический индекс строковых префиксов.
Этап 18
Битовые операции
Безопасные маски, XOR и множества малого размера.
- 01Биты, сдвиги и безопасные маскиМаска с единственной единицей позволяет проверять конкретный бит, а операция x & (x - 1) удаляет младший установленный бит.Не начат
- 02XOR и маски подмножествXOR сокращает пары одинаковых чисел, а маска от 0 до 2^n-1 однозначно кодирует выбор каждого элемента небольшого набора.Не начат
Этап 19
Распознавание паттернов
Выбор техники по свойствам задачи, а не по ключевым словам.
- 01Диагностика задачи без названия паттернаСначала записываем форму входа, медленный эталон и нужное состояние; имя приёма появляется только после такой диагностики.Не начат
- 02Проверяем гипотезу о порогеНабор возможных ответов можно искать по значению, если проверка кандидата однозначна и остаётся истинной при движении в одну сторону.Не начат
Этап 20
Собеседование: итог
Смешанная практика, объяснение решения и план повторения.
- 01Таймированная симуляция собеседованияНа таймированной попытке сначала формулируем контракт, медленный эталон, состояние и альтернативу; разбор открывается только после собственного решения.Не начат
- 02Выпускной разбор и следующий циклВыпуск подтверждается независимыми попытками, ясным объяснением и планом возврата к конкретной ошибке, а не числом решённых карточек.Не начат
Локальный прогресс
Двигайтесь в своём темпе
- Уроки
- 0/54
- LeetCode 75
- 0/75
- Самостоятельно в LC75
- 0
- Повторить в LC75
- 0
Последние 12 недель
Отмечаются завершённые уроки, задачи и повторения — без серии дней.
Последние 12 недель
Учебной активности пока нет.