Чему вы научитесь
- Оценивать время работы алгоритмов через O-большое и не бояться асимптотики
- Выбирать правильную структуру данных под задачу (массив, список, дерево, куча)
- Реализовывать сортировки и понимать, какая когда быстрее
- Применять бинарный поиск и бинарный поиск по ответу
- Считать суммы на отрезке за O(1) через префиксные суммы
- Использовать дерево Фенвика для запросов с обновлениями
- Писать простейшее динамическое программирование (и отличать его от жадных алгоритмов)
- Работать со строками через префикс-функцию, Z-функцию и алгоритм Манакера
О курсе
Это не курс «напиши десять сортировок и успокойся». Это курс, после которого вы перестанете писать вложенные циклы там, где можно за O(n), и начнёте замечать, почему ваша программа тормозит на больших данных. Разбираем всё от базовых структур до алгоритмов на строках — ровно столько, чтобы пройти техническое собеседование на junior+ и не вылететь на первой же задаче про сложность.
Для кого этот курс
Самоучки, которые пишут код, но никогда не задумывались о скорости его работы
Студенты 1–2 курса, у которых «дискретка» и «алгоритмы» идут тяжёлым фоном
Разработчики, готовящиеся к собеседованию в FAANG-подобные компании
Те, кто слышал про «префикс-функцию» и «дерево Фенвика», но боится даже открыть Википедию
Все, кто хочет перестать гуглить «как проверить, есть ли элемент в списке быстро»
Начальные требования
-
Уверенное знание любого императивного языка (C++, Python, Java, C#, Go)
-
Понимание циклов, функций, массивов, рекурсии (на базовом уровне)
-
Не пугаться буквы O в выражениях вроде O(n log n)
Наши преподаватели
Программа курса
Что вы получаете
- Навигатор по основным структурам данных: когда массив, когда хеш-таблица, когда куча
- Готовую «шпаргалку» по асимпотике: O(1), O(log n), O(n), O(n log n), O(n²) с живыми примерами
- Реализации ключевых алгоритмов на популярных языках (на выбор)
- Понимание ДП на простых задачах (рюкзак, кузнечик, лесенка)
- Умение не писать велосипед, когда есть std::sort или sorted()
Price:
Бесплатно