учебный путь · python

Python: структуры данных

  • Python
  • Средний
  • 5 модулей
  • 25 задач
  • 5 задач · бесплатно до модуля 1 из 5

Освойте структуры данных на прикладных задачах: стеки и очереди на deque, хеш-индексы и группировки на dict/Counter, приоритетные очереди на heapq, и свои деревья и графы как функции над dict. Без сквозного проекта — каждая задача самостоятельна.

AI-ассистент ведёт подсказками, но решение не выдаёт
intro

Что тебя ждёт в этом пути

Автор программы:

Что ты построишь

25 решений на Python в 5 паках, без сквозного проекта. Начнёшь со стека для Backspace и очереди печати на deque, пройдёшь через частоты тегов и обратный индекс на dict, streaming-медиану на двух heap, полный размер вложенной папки рекурсией, и закончишь топологической сортировкой пакетов с fail-closed на цикле. Пак «Стеки и очереди» бесплатный, «Хеш-индексы», «Приоритетный порядок», «Деревья» и «Графы» премиум. Деревья и графы здесь не отдельный тип, а функции над словарём: свою структуру писать не придётся.

Для кого

Для тех, кто знает базовый Python и хочет закрыть пробел в структурах данных перед алгоритмическим собеседованием или архитектурной задачей. Уровень пути medium: пригодится опыт с функциями и словарями, но глубокое ООП не требуется. BFS, DFS и heapq объясняются на прикладных примерах, а не абстрактно.

Что нужно знать до старта

  • Уметь писать функции, циклы и условия на Python
  • Работать со списками, кортежами, множествами и словарями

Чему научишься

  • Использовать deque для стека и очереди вместо list, где вставка в начало дорогая
  • Строить хеш-индексы и группировки на dict и Counter с сохранением порядка появления
  • Работать с heapq.nlargest, nsmallest и merge вместо ручной сортировки всего набора
  • Держать текущую медиану потока на паре heap без пересчёта по всем данным
  • Обходить дерево в глубину и в ширину, с восстановлением пути и без
  • Находить цикл в графе трёхцветным DFS и строить топологический порядок по Кану
  • Выбирать между стеком, очередью, кучей и хеш-таблицей по форме задачи, а не по привычке
curriculum

Задачи пути — 5 модулей, 25 задач

Каждый модуль — навык. Решаешь задачи по порядку, и к финалу из них собирается рабочий результат.

25 задач · 5 модулей
1.1
Печать с Backspace
Стек символов: каждый Backspace снимает ровно последний введённый символ, а на пустом тексте просто игнорируется
1.2
Сбалансированные скобки
Стек открывающих скобок: каждая закрывающая обязана снять парную вершину, иначе конфиг несбалансирован
1.3
Очередь печати
Очередь FIFO на deque: документы выходят в порядке постановки, а serve по пустой очереди просто игнорируется
1.4
Пик нагрузки в окне
Максимум нагрузки в скользящем окне на монотонном deque: окно сдвигается на 1, а нехватка данных даёт пустой список
1.5
Недавно просмотренные
Лента последних товаров на deque: повтор всплывает в голову без дублей, а лимит вытесняет самый старый хвост
2.1
Частоты тегов
Сосчитайте, сколько раз каждый тег встречается в потоке тикетов, и верните словарь «тег → число вхождений» без нулевых ключей
2.2
Группировка по городу
Сгруппируйте контакты по городу, сохраняя имена в порядке появления во входе и не трогая исходный список
2.3
Первый уникальный посетитель
Найдите первого по порядку посетителя, зашедшего ровно один раз; если таких нет — верните None
2.4
Общие навыки
Верните навыки, присутствующие у обоих кандидатов, без дублей и отсортированные по алфавиту
2.5
Обратный индекс
Постройте индекс «слово → отсортированные уникальные номера строк»; повтор слова в одной строке не задваивает её номер
3.1
Топ результатов лидерборда
k наибольших результатов по убыванию через heapq.nlargest: дубли сохраняются, k больше длины не падает, k <= 0 даёт пустой список
3.2
Самые короткие джобы вперёд
k наименьших длительностей по возрастанию через heapq.nsmallest: равные минимумы оба сохраняются, k больше длины не падает, k <= 0 даёт пустой список
3.3
Разбор тикетов по приоритету
Min-heap с tie-break по индексу поступления: меньший приоритет важнее, при равенстве — FIFO по порядку прихода, а не по алфавиту имени
3.4
Слияние отсортированных потоков
k-way merge через heapq.merge: несколько уже отсортированных потоков сливаются в один неубывающий, дубли сохраняются, пустые потоки пропускаются
3.5
Текущая медиана цены
Streaming-median через два heap (max-heap нижней половины + min-heap верхней): медиана каждого префикса как float, на чётном префиксе — среднее двух центральных
4.1
Полный размер папки
Рекурсивно сложите размер папки и всех вложенных файлов и подпапок на любой глубине
4.2
Глубина оргструктуры
Высота дерева подчинения: число уровней от руководителя до самого дальнего подчинённого включительно
4.3
Комментарии по уровням
Обход в ширину: значения узлов дерева комментариев, сгруппированные по уровню вложенности слева направо
4.4
Путь до статьи
DFS-поиск пути: значения от корня базы знаний до раздела с заданным заголовком, или None, если его нет
4.5
Исходы дерева решений
DFS-сбор листьев: значения всех конечных узлов дерева решений слева направо, без внутренних узлов
5.1
Достижимые сервисы
Обход графа в ширину: соберите все сервисы, достижимые из заданного по зависимостям, без дублей и в отсортированном виде
5.2
Рукопожатия от источника
BFS-расстояния: для каждого достижимого пользователя минимальное число рёбер от заданного, источник на нуле
5.3
Кратчайший маршрут
BFS с восстановлением пути: кратчайший маршрут по числу пересадок между двумя станциями, иначе None
5.4
Обнаружение циклического импорта
Трёхцветный DFS: цикл фиксируется по ребру в узел, находящийся на текущем стеке обхода, а не просто по «уже посещён»
5.5
Порядок установки пакетов капстоун
Топологическая сортировка по Кану с детерминированным алфавитным tie-break; на цикле fail-closed — ValueError, а не частичный список
Путь входит в Koddo Premium Открой все премиум-пути, AI-ассистента без лимитов и daily challenge. от 490 ₽ / мес
koddo start python-data-structures

Готов начать этот путь?

Зарегистрируйся — откроем путь прямо на первой задаче. Без установки и настройки, всё в браузере.