Курс для тех, кто уже знает C++, Python, Java, Go или C#. Научитесь быстрее писать код, видеть варианты решения задач и проходить алгоритмическое интервью.
- Бесплатная часть. Понятие алгоритма. Скользящее среднее. Метод двух указателей.
- Введение в алгоритмы. Понятие сложности алгоритма. O-нотация. Оценка времени исполнения программы. Уроки про алгоритмические собеседования.
- Основные структуры данных. Массив, связный список, стек, очередь. Сложность операций вставки, поиска и удаления. Представление данных в памяти. Пространственная сложность алгоритма.
- Рекурсия и сортировки. Понятие рекурсии. Принцип «разделяй и властвуй». Бинарный поиск.Квадратичные сортировки. Сортировка слиянием. Быстрая сортировка. Линейная сортировка подсчётом.
- Хеш-функции и хеш-таблицы. Абстракция отображения. Понятие и свойства хеш-функции, примеры. Структура данных хеш-таблица. Коллизии и способы их разрешения.
- Деревья. Структура данных дерево. Сбалансированные деревья поиска. Структура данных куча. Пирамидальная сортировка.
- Графы. Определение графа, способы представления в памяти. Обход графа в глубину и в ширину. Компоненты связности. Алгоритмы поиска кратчайшего пути. Минимальное остовное дерево.
- Жадные алгоритмы и динамическое программирование. Динамическое программирование. Жадные алгоритмы. Пробное алгоритмическое собеседование.
- Алгоритмы на строках.. Префикс-функция. Подстроки, префиксы и суффиксы. Поиск шаблона в строке. Наивный алгоритм. Структура данных бор. Практика решения задач с алгоритмических собеседований.