paths / python-data-structures
учебный путь · python

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

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

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

AI-ассистент ведёт подсказками, но решение не выдаёт
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 start python-data-structures

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

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