Вопросы по Алгоритмы
Научит узнавать паттерн по условию задачи, писать решение на JS по шаблону и уверенно объяснять сложность. Закрывает алгоритмическую секцию на собесе.
Проверьте себя: тест по алгоритмам
20 вопросов, 10 минут, уровень junior, middle или senior
Сложность
Big O по времени и памяти, амортизация, как оценить решение до кода.
Урок: Сложность алгоритмов: как считать Big O 6 минМассивы и хеш-таблицы
Map и Set для поиска за O(1): частоты, пары, группировка.
Урок: Паттерн: Хеш-таблица 8 мин- Все начала анаграмм
- K самых частых слов
- Есть ли дубликаты
- Первый неповторяющийся символ
- Группировка анаграмм
- Изоморфные строки
- Самая длинная цепочка подряд
- Two Sum
Ещё 23 вопроса и задачи
- Слова по шаблону
- Первый повторный заказ
- Самая длинная серия подряд идущих чисел
- Число пар с заданной суммой
- Топ-k самых частых тегов
- Группировка анаграмм: ключ
- Есть ли дубликат
- Хеш-таблица
- Худший случай хеш-таблицы
- Самая длинная последовательность
- Map против объекта
- NaN и -0 в Set
- Объект или Map для частот
- Объясни Two Sum через хеш
- Two Sum: оптимальный подход
- Чемпионат по шагам
- Уникальные игрушки
- Ускорить фильтрацию по списку кодов
- Буквы строки в алфавите
- Счастливое число
- Совпавшие и различающиеся
- Развернуть связи наоборот
- Третий по величине
Два указателя
Встречные и однонаправленные указатели на отсортированных массивах и строках.
Урок: Паттерн: Два указателя 8 мин- Строки с забоем
- Слияние в первый массив
- Квадраты отсортированного массива
- Контейнер с водой
- Сдвинуть нули в конец
- Палиндром двумя указателями
- Удалить дубли на месте
- Сортировка трёх значений
Ещё 19 вопросов и задач
- Тройки с нулевой суммой
- Пара с суммой в отсортированном массиве
- Палиндром, если удалить не больше одной буквы
- Пары близких по времени событий
- Общие элементы двух отсортированных списков
- Различные тройки с нулевой суммой
- Контейнер с водой
- Объясни метод двух указателей
- Слияние в первый массив
- Перенос нулей в конец
- Палиндром: найди ошибку
- Удаление дубликатов на месте
- Пара с суммой в отсортированном массиве
- 3Sum: сложность
- Виды двух указателей
- Когда работают два указателя
- Минимальный разброс среди k чисел
- Слияние двух отсортированных массивов
- Выбор друзей на вечеринку
Скользящее окно
Подмассивы и подстроки с условием: окно фиксированной и переменной длины.
Урок: Паттерн: Скользящее окно 8 мин- Самая длинная серия единиц с k заменами
- Перестановка как подстрока
- Самая длинная серия после k замен
- Самая длинная подстрока без повторов
- Максимальная сумма окна длины k
- Максимум гласных в окне
- Кратчайший подмассив с суммой ≥ target
- Самая короткая подстрока с k различными
Ещё 17 вопросов и задач
- Самая длинная подстрока без повторов: где начинается
- Лучшие k дней подряд по выручке
- Минимальное окно, содержащее все символы шаблона
- Сумма максимумов всех окон длины k
- Поиск анаграммы в строке
- Объясни скользящее окно
- Максимальная сумма окна длины k
- Подстрока без повторов
- Минимальное окно: условие сжатия
- Окно и отрицательные числа
- Ошибка в обновлении ответа
- Почему вложенный while не даёт O(n²)
- Скользящее окно
- Фиксированное и переменное окно
- Тройки из трёх разных символов
- Максимумы в окне
- Все подмассивы с заданной суммой
Префиксные суммы
Суммы на отрезке за O(1) и подсчёт подмассивов с заданной суммой.
Урок: Паттерн: Префиксные суммы 7 минСтек и монотонный стек
Скобки, вычисление выражений, ближайший больший элемент.
Урок: Паттерн: Монотонный стек 10 мин- Столкновение астероидов
- Нормализация пути
- Сколько воды удержится
- Следующий больший элемент
- Распаковка строки
- Обратная польская запись
- Стек с минимумом
- Правильные скобки
Ещё 14 вопросов и задач
- Правильная скобочная последовательность трёх видов
- Наибольший прямоугольник в гистограмме
- Упростить путь в файловой системе
- Сумма минимумов всех подотрезков
- Правильные скобки
- Краевой случай в скобках
- Сколько дней до потепления
- Объясни монотонный стек
- Стек с минимумом за O(1)
- Монотонный стек
- Монотонный стек: что выведет
- Следующий больший элемент
- Обратная польская запись
- Стек
Бинарный поиск
Поиск в отсортированном и поиск по ответу без ошибок на границах.
Урок: Паттерн: Бинарный поиск 8 мин- Бинарный поиск
- Бинарный поиск по ответу
- Любой локальный максимум
- Позиция вставки
- Целочисленный корень
- Минимум в повёрнутом массиве
- Левая граница
- Поиск в отсортированной матрице
Ещё 18 вопросов и задач
- Поиск в повёрнутом массиве
- Бинпоиск по ответу
- Сложность бинпоиска
- Шаблон lower bound
- Объясни бинпоиск по ответу
- Первое вхождение
- Бесконечный цикл в бинпоиске
- Вычисление середины
- Поиск в повёрнутом массиве
- Целый корень
- Когда применим бинпоиск
- Расставить зарядные станции как можно дальше друг от друга
- k-е число в таблице умножения
- Ближайший склад для каждого покупателя
- Разделить главы между редакторами
- Суммарная неудовлетворённость
- Первый упавший сервер
- Число шагов бинарного поиска
Связные списки
Разворот, быстрый и медленный указатели, слияние, фиктивный узел.
Урок: Паттерн: Связный список 8 мин- Сложение чисел списками
- Перестановка по чётности позиций
- Список-палиндром
- Цикл в списке
- Середина списка
- Слияние отсортированных списков
- Удалить n-й с конца
- Разворот связного списка
Ещё 13 вопросов и задач
- Текстовый редактор с курсором
- Есть ли цикл в списке и какой он длины
- Первый общий узел двух списков
- Массив против списка
- Есть ли цикл в списке
- Зачем фиктивный узел
- Объясни разворот списка
- Начало цикла по Флойду
- k-й с конца за один проход
- Слияние двух отсортированных списков
- Середина списка
- Узел связного списка
- Разворот списка: ошибка
Деревья
Обходы, рекурсия на деревьях, BST, обход по уровням.
Урок: Деревья: обходы и рекурсия 7 мин- Проверка двоичного дерева поиска
- Одинаковые ли деревья
- Зеркальность дерева
- Диаметр дерева
- Обход зигзагом
- Обход по уровням
- Плоский список узлов дерева
- Зеркальное отражение дерева
Ещё 23 вопроса и задачи
- Ближайший общий предок
- Глубина дерева
- Есть ли путь с суммой
- Вид дерева справа
- Сериализация дерева
- Может ли последовательность быть прямым обходом BST
- Глубина оргструктуры по списку начальников
- Диаметр дерева: самый длинный путь
- Сумма расстояний по запросам в дереве
- Проверка сбалансированности
- Бинарное дерево поиска
- Поиск в BST
- Сложность максимальной глубины
- Объясни рекурсию на деревьях
- Симметричный обход BST
- Общий предок в BST
- Обход по уровням
- Обходы дерева
- Проверка BST: ошибка
- Сумма значений дерева
- Минимальная глубина дерева
- Минимальная разность в дереве поиска
- Сумма значений в диапазоне
Графы: BFS и DFS
Представление графа, обходы, кратчайший путь без весов, топологическая сортировка.
Урок: Паттерн: Обход в глубину 11 мин- Можно ли пройти все курсы
- Число связных групп
- Распространение по слоям
- Обход графа в ширину
- Заливка области
- Цикл в ориентированном графе
- Число островов
- Топологическая сортировка
Ещё 17 вопросов и задач
- Можно ли разбить на две команды без конфликтов
- Сколько отдельных групп друзей
- Самый быстрый маршрут: алгоритм Дейкстры
- Сколько пользователей ровно на k-м рукопожатии
- Минимум семестров с учётом пререквизитов
- BFS против DFS
- Цикл в ориентированном графе
- Рекурсивный DFS на большой сетке
- Объясни BFS и его сложность
- Число островов
- Представление графа
- Кратчайший путь без весов
- Порядок курсов
- Топологическая сортировка
- Когда помечать посещённой в BFS
- Маршрут перелётов
- Порядок установки зависимостей
Интервалы
Слияние, пересечения и вставка интервалов, сортировка по началу или концу.
Урок: Паттерн: Интервалы 7 мин- Пересечение двух списков
- Минимум удалений интервалов
- Можно ли посетить все встречи
- Вставка интервала
- Слияние интервалов
- Сколько нужно переговорок
- Общее свободное время двух людей
- Сколько переговорок нужно офису
Ещё 13 вопросов и задач
- Объединить отрезки и найти покрытую длину
- Объясни слияние интервалов
- Вставка интервала
- Сколько нужно переговорок
- Слияние интервалов
- Слияние: ошибка с концом
- Минимум удалений
- Пересекаются ли два интервала
- По началу или по концу
- Сканирующая прямая
- Касающиеся интервалы
- Пересечение периодов онлайна
- Самый долгий промежуток тишины
Жадные
Когда локально лучший выбор даёт глобальный оптимум и как это обосновать.
Урок: Паттерн: Жадность 7 минДинамическое программирование
Состояние, переход, база: от рекурсии с мемоизацией к таблице.
Урок: Паттерн: Динамическое программирование 10 мин- Число расшифровок
- Расстояние редактирования
- Минимальная сумма пути в сетке
- Разбиение на слова
- Варианты подъёма по лестнице
- Минимум монет
- Числа Фибоначчи с мемоизацией
- Нельзя брать соседние
Ещё 21 вопрос или задача
- Наибольшая общая подпоследовательность
- Максимальная сумма подмассива
- Число путей в сетке
- Расстояние Левенштейна между двумя словами
- Число путей по клетчатому полю с препятствиями
- Рюкзак 0/1: максимальная ценность
- Наибольшая возрастающая подпоследовательность за n log n
- Подъём по лестнице с минимальной платой
- Торговля акцией с комиссией и днём перерыва
- Лестница
- Инициализация в размене монет
- Динамическое программирование
- Признак динамики
- Как составить DP
- Объясни задачу о размене монет
- Грабитель домов
- Рюкзак 0/1 в одномерном массиве
- Наибольшая возрастающая подпоследовательность
- Сложность мемоизации
- Сделать массив великим
- Максимальный путь по треугольнику
Перебор с возвратом
Подмножества, перестановки, комбинации и отсечения.
Урок: Паттерн: Перебор с возвратом 8 мин- Буквы номера телефона
- Поиск слова в сетке
- Наборы с заданной суммой
- Правильные скобочные последовательности
- Все перестановки
- Все подмножества
- Перебор с возвратом
- Три шага backtracking
Ещё 12 вопросов и задач
- Забыли копию
- Подмножества с дубликатами
- Объясни генерацию перестановок
- Ферзи: проверка за O(1)
- Перестановки или сочетания
- Отсечение в сумме комбинаций
- Сколько подмножеств
- Все правильные скобочные последовательности
- Сколько способов расставить n ферзей
- Расставить плюсы и минусы: встреча посередине
- Все различные перестановки букв
- Комбинации с заданной суммой