ЛентаСтатьиЗаметкиКурсы
Рецепты
← Все курсы

Алгоритмы и структуры данных v2

GoAlgorithmsData StructuresBig OSortingGraphsDynamic ProgrammingBenchmarks

Курс: Алгоритмы и структуры данных на Go

О курсе

Цель: научиться выбирать и писать алгоритмы осознанно — на одном языке, до дна. Каждая структура сначала собирается своими руками, потом сравнивается со стандартной библиотекой: своя хеш-таблица рядом с map, своя куча рядом с container/heap, наивный поиск подстроки рядом с strings.Contains.

Подход: никаких «представьте, что есть массив» — только работающий Go. Почти каждый модуль начинается с инцидента, который случается в реальном коде, и заканчивается бенчмарком или счётчиком операций: мы не верим оценкам на бумаге, мы их измеряем.

Почему только Go: второй язык размывает фокус. Один язык означает, что разговор всегда про суть алгоритма и его цену, а не про синтаксис. Всё, что нужно знать про измерения, лежит в стандартных testing.B и go test -bench — а playground курса запускает сниппеты прямо в браузере.

Эта версия курса — новая: 20 модулей сквозной линией «база → структуры → сортировка и поиск → деревья и строки → графы → DP → практикум». Старый мультиязычный курс остаётся доступен рядом.


Кому подходит

  • Уверенный Go: срезы, мапы, интерфейсы, горутины на базовом уровне.
  • Готовитесь к собеседованиям или хотите перестать писать O(n²) там, где достаточно одной мапы.
  • Проходили алгоритмы «когда-то в университете» и хотите собрать картину заново — уже на рабочем языке.

Стек

ЧтоЧем
ЯзыкGo 1.27 — единственный
Измеренияtesting.B, go test -bench -benchmem, счётчики операций
Стандартная библиотекаslices, maps, sort, container/heap, math/bits
Практикасниппеты в playground + локальные бенчмарки + задачи

Маршрут курса

Фундамент (модули 1–2): сложность и измерения → срезы и строки Go. Без этого дальше некуда: половина «алгоритмических» проблем — это незнание цены собственных типов.

Линейные структуры и приёмы (3–7): два указателя и окно → хеш-таблицы → стек, очередь, монотонный стек → связные списки и LRU → рекурсия и перебор с возвратом.

Сортировка и поиск (8–10): от insertion sort до quick sort и slices.Sort → куча и top-K → бинарный поиск и поиск по ответу.

Деревья и строки (11–13): бинарные деревья и обходы → BST и чем его заменять в Go → trie, KMP и хеши подстрок.

Графы (14–15): обходы, компоненты, топологическая сортировка → Дейкстра, DSU, минимальное остовное дерево.

Динамическое программирование и жадные (16–18): от мемоизации к таблице → двумерный DP (рюкзак, LCS, редактор) → жадные и интервалы.

Биты, математика, практикум (19–20): битовые операции, НОД, решето, modpow → каталог паттернов и план тренировок.

Карта структур курса: от признака задачи к структуре данных

Итоговый артефакт: личная библиотека решений на Go — свои реализации структур, отлаженные шаблоны (бинарный поиск, BFS, DP) и набор решённых задач, размеченный по паттернам.


Как проходить

  1. Читайте с открытым редактором: каждый блок кода — рабочий, его можно запустить в playground прямо на странице модуля.
  2. Не пропускайте бенчмарки: «примерно O(log n)» и «вот цифры на моей машине» — разные уровни понимания.
  3. Задачи практики решайте до спойлеров — разборы даны, но сначала попытка.
  4. Модули 16–18 требуют модулей 3–7: DP — это комбинация окна, рекурсии и массивов, а не отдельная магия.

Программа курса

1

Модуль 1: Сложность и измерения

→
2

Модуль 2: Срезы и строки изнутри

→
3

Модуль 3: Два указателя и скользящее окно

→
4

Модуль 4: Хеш-таблицы

→
5

Модуль 5: Стек, очередь, дек и монотонный стек

→
6

Модуль 6: Связные списки

→
7

Модуль 7: Рекурсия и перебор с возвратом

→
8

Модуль 8: Сортировки: от insertion sort до quick sort

→
9

Модуль 9: Куча и приоритетные очереди

→
10

Модуль 10: Бинарный поиск и поиск по ответу

→
11

Модуль 11: Бинарные деревья: обходы и задачи

→
12

Модуль 12: BST и чем его заменять в Go

→
13

Модуль 13: Trie и поиск подстроки

→
14

Модуль 14: Графы: обходы, компоненты, порядок

→
15

Модуль 15: Кратчайшие пути, DSU и остовное дерево

→
16

Модуль 16: Динамическое программирование: базовый уровень

→
17

Модуль 17: Двумерный DP: рюкзак, LCS, редактор

→
18

Модуль 18: Жадные алгоритмы и интервалы

→
19

Модуль 19: Биты и математика

→
20

Модуль 20: Практикум: паттерны и план тренировок

→
Начать обучение