Основной маршрут

От первого перебора до выбора паттерна

54 коротких урока образуют одну цепочку. Зависимости показывают, что нужно понимать, а не запрещают заглянуть вперёд.

Начать первый урок

Этап 0

Как думать о задачах

Ограничения, сложность, перебор, инварианты и тестирование.

  1. 01Ограничения как бюджет решенияПереводим размер входа в допустимый порядок роста до написания кода.Не начат
  2. 02От полного перебора к узкому местуСтроим корректный перебор, называем повторяющуюся работу и затем оптимизируем.Не начат
  3. 03Инварианты, граничные случаи и тестыИспользуем инвариант как доказательство и превращаем риски в тесты.Не начат

Этап 1

Инструменты языка

Практический мост к контейнерам, сортировке и рекурсии в C++ и Python.

  1. 01Контейнеры и стоимость операцийСтоимость операции следует из внутреннего устройства контейнера: плотного массива, хеш-таблицы или очереди.Не начат
  2. 02Сортировка, функции и рекурсия в двух языкахСтандартной сортировке достаточно передать явный ключ порядка.Не начат

Этап 2

Массивы, строки и хеширование

Линейные обходы, быстрый поиск, частоты и группировка.

  1. 01Обход массивов и строкНесколько агрегатов обновляются одним чтением элемента.Не начат
  2. 02Быстрый поиск: set и map`target-x` можно проверять среди уже просмотренных.Не начат
  3. 03Частоты, группировка и подсчётАнаграммы имеют одинаковые частоты символов.Не начат

Этап 3

Два указателя

Движение границ с доказуемо безопасным отбрасыванием вариантов.

  1. 01Два указателя навстречуПорядок позволяет безопасно убрать одну границу.Не начат
  2. 02Указатели в одном направленииНовый элемент отличается от последнего записанного.Не начат

Этап 4

Скользящее окно

Поддержание свойства непрерывного фрагмента без повторного пересчёта.

  1. 01Окно фиксированного размераПри сдвиге один элемент уходит и один приходит.Не начат
  2. 02Расширение, сжатие и инвариант окнаПри повторе left прыгает за прошлое вхождение.Не начат

Этап 5

Префиксные техники

Накопленная информация для диапазонов и подмассивов.

  1. 01Префиксные суммы и счётчикиСумма диапазона — разность двух префиксов.Не начат
  2. 02Префиксные и суффиксные накопленияПроизведение кроме текущего элемента собирается из левого префикса и правого суффикса.Не начат

Этап 6

Стек, очередь и дек

Порядок обработки и монотонные структуры.

  1. 01Стек: незавершённая работа и скобкиСтек хранит последнюю открытую конструкцию, которую должен закрыть следующий подходящий символ.Не начат
  2. 02Очередь и декДек хранит только ещё полезные элементы текущего окна и удаляет устаревшие индексы с противоположного конца.Не начат
  3. 03Монотонный стек и монотонный декМонотонный стек удаляет кандидата именно тогда, когда текущий элемент впервые становится для него ответом.Не начат

Этап 7

Сортировка и интервалы

Как порядок данных открывает структуру решения.

  1. 01Зачем сортировать перед решениемСортировка превращает поиск близкой пары среди всех пар в проверку соседей.Не начат
  2. 02Слияние, разбиение и гарантии сортировокMerge sort получает гарантию O(n log n), потому что делит задачу по глубине и линейно сливает каждый уровень.Не начат
  3. 03Интервалы, пересечения и объединениеПосле сортировки по началу достаточно сравнивать новый интервал с последним уже объединённым.Не начат

Этап 8

Бинарный поиск

Точные границы, инварианты и поиск по ответу.

  1. 01Точный бинарный поиск через инвариантБинарный поиск безопасно отбрасывает половину только благодаря отсортированности и явно выбранным границам.Не начат
  2. 02Первая и последняя подходящая позицияПоиск границы рассматривает булеву последовательность false…false,true…true, а не обязательно точное значение.Не начат
  3. 03Поиск по ответу и монотонный предикатЕсли допустимость ответа монотонна, можно искать минимальное допустимое значение, не строя сам ответ напрямую.Не начат

Этап 9

Связные списки

Перенаправление ссылок, слияние, разворот и циклы.

  1. 01Узлы, dummy и безопасное перенаправление ссылокDummy-узел убирает особый случай первой вставки, а хвост результата всегда указывает на последний уже слитый узел.Не начат
  2. 02Слияние, разворот и обнаружение циклаРазворот списка сохраняет следующий узел до смены стрелки, а алгоритм Флойда обнаруживает цикл по встрече указателей с разной скоростью.Не начат

Этап 10

Деревья

Обходы, рекурсивные возвраты, уровни и BST.

  1. 01Модель дерева и три порядка обходаПоложение обработки корня относительно рекурсивных вызовов определяет preorder, inorder или postorder.Не начат
  2. 02DFS дерева: что возвращает рекурсияПолезный рекурсивный вызов возвращает родителю краткое резюме поддерева, а не просто «обходит» его.Не начат
  3. 03BFS по уровням и выбор BFS/DFSРазмер очереди в начале итерации фиксирует границу текущего уровня и не смешивает его с детьми.Не начат
  4. 04Инвариант бинарного дерева поискаBST ускоряет поиск только пока каждый узел разделяет ключи на строго определённые области.Не начат

Этап 11

Куча и приоритетная очередь

Повторный доступ к экстремуму, Top K и потоки.

  1. 01Куча и priority queueКуча хранит частичный порядок: экстремум доступен сразу, но остальные элементы не обязаны быть полностью отсортированы.Не начат
  2. 02Top K, потоки и слияние источниковПри k-way merge куча хранит только текущую голову каждого источника, поэтому следующий глобальный минимум всегда находится на вершине.Не начат

Этап 12

Бэктрекинг

Перебор дерева решений с откатом и отсечениями.

  1. 01Дерево решений: choose → recurse → undoПерестановка выбирает следующий неиспользованный элемент; комбинация выбирает следующий индекс только справа, а подмножество допускает include/exclude.Не начат
  2. 02Отсечения, дубликаты и мутация состоянияВ комбинациях положительных чисел сортировка одновременно открывает безопасный break по сумме и соседний пропуск одинаковых ветвей.Не начат

Этап 13

Графы и сетки

Связность, обходы, зависимости и кратчайшие пути.

  1. 01Графы, списки смежности и сеткиСписок смежности хранит только существующие рёбра и делает соседей вершины доступными за время, пропорциональное её степени.Не начат
  2. 02DFS, компоненты и циклыНовый запуск DFS из непосещённой вершины открывает ровно одну новую компоненту связности.Не начат
  3. 03BFS, кратчайший путь и несколько источниковMulti-source BFS кладёт все источники в нулевой слой до старта и одним обходом находит расстояние до ближайшего из них.Не начат
  4. 04Зависимости и топологический порядокАлгоритм Кана удаляет только вершины без оставшихся зависимостей; неполный результат обнаруживает цикл.Не начат
  5. 05DSU и динамическая связностьDSU хранит каждую компоненту как дерево представителей и быстро поддерживает только объединения.Не начат
  6. 06Дейкстра для неотрицательных весовДейкстра всегда продолжает с наименьшей известной метки и корректен только потому, что веса неотрицательны.Не начат

Этап 14

Жадные алгоритмы

Локальный выбор только вместе с доказательством безопасности.

  1. 01Когда локальный выбор безопасенЖадный шаг допустим лишь тогда, когда его можно обменять на шаг из любого оптимального решения без ухудшения ответа.Не начат
  2. 02Сортировка + жадный выбор на интервалахЕсли нужна максимальная совместимая подборка, выбор самого раннего окончания оставляет максимум времени для будущих интервалов.Не начат

Этап 15

Основы динамического программирования

Состояние, переход, база, порядок и восстановление ответа.

  1. 01Определяем состояние DPМемоизация сохраняет точный ответ для каждой остаточной подзадачи и превращает повторяющееся дерево рекурсии в граф состояний.Не начат
  2. 02Переход, база и порядок вычисленияВ табуляции состояние вычисляют только после всех состояний, от которых зависит его переход.Не начат
  3. 03Take/skip, число способов, min/maxВ задаче take/skip лучший ответ на префиксе получается из явного сравнения взять текущий элемент или сохранить лучший совместимый префикс.Не начат
  4. 04Рюкзак и состояние подпоследовательностиВ 0/1-рюкзаке dp[w] хранит лучшую ценность при вместимости w после уже обработанных предметов, а обратный обход не даёт взять предмет повторно.Не начат

Этап 16

Двумерное и последовательностное DP

Сетки и пары последовательностей.

  1. 01DP по сетке и двум координатамВ монотонной сетке dp[row][col] хранит число путей до клетки из уже посчитанных верхней и левой клеток с учётом препятствий.Не начат
  2. 02DP по двум последовательностямДля LCS и edit distance ячейка по двум префиксам выбирает переход, который точно соответствует цели: длине общей подпоследовательности или числу правок.Не начат

Этап 17

Trie

Практический индекс строковых префиксов.

  1. 01Trie как индекс префиксовВ trie путь от корня кодирует общий префикс, а terminal отделяет полное слово от просто существующего префикса.Не начат

Этап 18

Битовые операции

Безопасные маски, XOR и множества малого размера.

  1. 01Биты, сдвиги и безопасные маскиМаска с единственной единицей позволяет проверять конкретный бит, а операция x & (x - 1) удаляет младший установленный бит.Не начат
  2. 02XOR и маски подмножествXOR сокращает пары одинаковых чисел, а маска от 0 до 2^n-1 однозначно кодирует выбор каждого элемента небольшого набора.Не начат

Этап 19

Распознавание паттернов

Выбор техники по свойствам задачи, а не по ключевым словам.

  1. 01Диагностика задачи без названия паттернаСначала записываем форму входа, медленный эталон и нужное состояние; имя приёма появляется только после такой диагностики.Не начат
  2. 02Проверяем гипотезу о порогеНабор возможных ответов можно искать по значению, если проверка кандидата однозначна и остаётся истинной при движении в одну сторону.Не начат

Этап 20

Собеседование: итог

Смешанная практика, объяснение решения и план повторения.

  1. 01Таймированная симуляция собеседованияНа таймированной попытке сначала формулируем контракт, медленный эталон, состояние и альтернативу; разбор открывается только после собственного решения.Не начат
  2. 02Выпускной разбор и следующий циклВыпуск подтверждается независимыми попытками, ясным объяснением и планом возврата к конкретной ошибке, а не числом решённых карточек.Не начат

Локальный прогресс

Двигайтесь в своём темпе

Начать первый урок
Уроки
0/54
LeetCode 75
0/75
Самостоятельно в LC75
0
Повторить в LC75
0

Последние 12 недель

Отмечаются завершённые уроки, задачи и повторения — без серии дней.

Последние 12 недель

Учебной активности пока нет.