Алгоритмы
Структуры данных, сортировки, графы и динамическое программирование
Big O Notation: оценка сложности алгоритмов
НачальныйЧто такое Big O, как оценивать временную и пространственную сложность алгоритмов. O(1), O(n), O(log n), O(n²) — с примерами на JavaScript.
Алгоритмы с массивами и строками: разворот, палиндром, анаграмма, скользящее окно
НачальныйРазбор популярных алгоритмических задач с массивами и строками на JavaScript: разворот строки, проверка на палиндром, анаграммы, метод скользящего окна (sliding window).
Хэш-таблицы в JavaScript: Map, Object, Set — подсчёт, группировка, Two Sum
НачальныйКак работают хэш-таблицы, когда использовать Map, Object и Set. Разбор задач: подсчёт элементов, группировка, Two Sum, первый неповторяющийся символ.
Стек и очередь: реализация и задачи на JavaScript
НачальныйЧто такое стек (LIFO) и очередь (FIFO), как реализовать на JavaScript. Разбор задач: правильные скобки, обход в ширину (BFS), минимальный элемент в стеке.
Связные списки: односвязный, двусвязный, reverse, cycle detection
СреднийРеализация связных списков на JavaScript: односвязный и двусвязный. Разворот списка, обнаружение цикла (алгоритм Флойда), удаление n-го элемента с конца.
Деревья: бинарное дерево, BFS, DFS, обходы
СреднийСтруктуры данных дерево и бинарное дерево на JavaScript. Обходы: inorder, preorder, postorder, BFS. Максимальная глубина, проверка BST, поиск пути.
Графы: adjacency list, BFS, DFS, кратчайший путь
СреднийПредставление графов, обходы BFS и DFS, поиск кратчайшего пути (алгоритм Дейкстры), топологическая сортировка. Примеры на JavaScript.
Сортировки: bubble sort, quick sort, merge sort — когда что использовать
СреднийАлгоритмы сортировки на JavaScript: пузырьком, быстрая сортировка, сортировка слиянием. Сложность, стабильность, когда выбирать каждый алгоритм.
Бинарный поиск: алгоритм и вариации
НачальныйБинарный поиск в отсортированном массиве на JavaScript: классический алгоритм, поиск первого/последнего вхождения, поиск позиции для вставки, поиск в rotated array.
Рекурсия: базовый случай, стек вызовов, хвостовая рекурсия
НачальныйЧто такое рекурсия, как работает стек вызовов, когда рекурсия полезна. Базовый случай, хвостовая рекурсия, типичные задачи: факториал, фибоначчи, обход дерева.
Динамическое программирование: memoization и tabulation
СреднийЧто такое динамическое программирование (DP), подходы memoization (сверху вниз) и tabulation (снизу вверх). Задачи: числа Фибоначчи, прыжки по лестнице, рюкзак, подпоследовательности.
Жадные алгоритмы и задача о рюкзаке
СреднийЧто такое жадные алгоритмы, когда они дают оптимальное решение. Разбор задач: размен монет, задача о рюкзаке, интервалы, Huffman coding, Huffman, оптимизация.