Мне часто приходится решать алгоритмические задачи, поэтому я решил собрать концепты их решения в одном месте. Для понимания нужно усвоить базовые вещи: асимптотический анализ, базовые структуры данных.
Решения прикладных, теоретических или LeetCode проблем, которые выходят за рамки сухих концептов, хранятся в другом месте:
- Теория вероятностей, математическая статистика, математическое моделирование, анализ данных
- Тренируюсь решать LeetCode проблемы программирования и изучаю Computer Science
Бинарный поиск, два указателя, строки, связные списки, деревья, хеш-таблицы, матрицы, очередь и стек, битовые манипуляции, скользящие окна, поиск с возвратом
Деревья, графы, поиск
- DFS & BFS
- Топологическая сортировка
- Префиксное дерево
- Суффиксное дерево
- Quad дерево
- Дерево отрезков
- Система непересекающихся множеств
- Дерево Меркла
- B / B+ дерево
- LSM дерево
- Splay дерево
- Алгоритмы Ли / Дейкстры / Флойда-Уоршелла
- Алгоритм Кадане
- Алгоритм Кнута-Морриса-Пратта
- Быстрый выбор (quick select)
Структуры данных
- Персистентные структуры данных
- Фильтр Блума
- Битовая карта
- Кольцевой буфер
- Фибоначчиева куча
Общее программирование
- Динамическое программирование
- Жадные алгоритмы