Алгоритмы на JavaScript

Решай задачи в браузере. У каждой есть тесты, разбор и оценка сложности.

Решено 0 из 20

Легко

Два числа с заданной суммой

Верните индексы двух разных элементов nums, сумма которых равна target. Просматривайте правый индекс слева направо; верните первую найденную пару [левый, правый], выбирая самый ранний левый индекс. Если пары нет, верните []. Исходный массив не изменяйте.

hash-maparrays
Тестов: 6
Легко

Правильная скобочная последовательность

Проверьте, корректно ли вложены и закрыты круглые, квадратные и фигурные скобки. Строка содержит только эти шесть символов. Пустая строка считается корректной.

stackstrings
Тестов: 6
Легко

Первое вхождение бинарным поиском

В отсортированном по возрастанию массиве найдите индекс первого вхождения target. Значения могут повторяться. Верните −1, если числа нет.

binary-searcharrays
Тестов: 6
Средне

Подстрока без повторяющихся символов

Верните длину самой длинной непрерывной подстроки без повторяющихся символов. Символом считается Unicode code point: emoji из одного code point занимает одну позицию; составные графемы отдельно не объединяются.

sliding-windowstringshash-map
Тестов: 6
Средне

Группировка анаграмм

Сгруппируйте слова, составленные из одинаковых букв с одинаковыми частотами. Порядок групп определяется первым появлением группы; порядок слов внутри группы сохраните. Регистр отсутствует: используются только строчные латинские буквы.

frequency-mapstrings
Тестов: 5
Средне

Объединение пересекающихся интервалов

Даны закрытые интервалы [start, end]. Объедините пересекающиеся и соприкасающиеся интервалы, верните результат по возрастанию начала. Входные массивы не изменяйте.

sortingintervals
Тестов: 5
Легко

Разворачивание вложенного массива

Разверните вложенные массивы чисел в один плоский массив, сохранив порядок слева направо. Вложенность произвольная, пустые массивы разрешены. Не используйте flat и не изменяйте вход.

stacktraversalarrays
Тестов: 5
Легко

Нули в конец без изменения входа

Верните новый массив с теми же числами: все ненулевые элементы в исходном порядке, затем все нули. Исходный массив не изменяйте. Значение −0 считается нулём.

two-pointersarrays
Тестов: 5
Средне

Произведение всех элементов кроме текущего

Для каждой позиции вычислите произведение всех остальных элементов. Не используйте деление. В массиве возможны нули и отрицательные числа; для одного элемента результат равен [1].

prefixarrays
Тестов: 5
Средне

Количество подмассивов с заданной суммой

Посчитайте непустые непрерывные подмассивы, сумма элементов которых равна k. Числа могут быть отрицательными, поэтому обычное окно с монотонным уменьшением суммы не подходит.

prefix-sumhash-map
Тестов: 6
Легко

Максимальная сумма окна длины k

Найдите максимальную сумму ровно k последовательных элементов. Значения могут быть отрицательными. Вход не изменяйте.

sliding-windowarrays
Тестов: 5
Сложно

Минимальное окно со всеми символами

Найдите кратчайшую подстроку s, содержащую все символы t с учётом повторов. При равной длине верните самое левое окно. Если решения нет или t пустая, верните пустую строку.

sliding-windowfrequency-mapstrings
Тестов: 6
Средне

Дни до более тёплой погоды

Для каждого дня верните число дней до ближайшей строго более высокой температуры. Если такого дня нет, запишите 0. Одинаковая температура не считается потеплением.

monotonic-stackarrays
Тестов: 5
Средне

Обход двоичного дерева по уровням

Верните значения узлов по уровням слева направо. Дерево задано JSON: узел имеет value, left и right; отсутствующий ребёнок равен null. Пустое дерево возвращает [].

bfstreequeue
Тестов: 6
Средне

Кратчайший путь в сетке

Найдите минимальное число шагов из левой верхней клетки в правую нижнюю. 0 — проход, 1 — стена; двигаться можно вверх, вниз, влево и вправо. Верните −1, если пути нет. Входную сетку не изменяйте.

bfsgridgraph
Тестов: 6
Сложно

Минимум семестров с зависимостями

Есть n курсов с номерами 0…n−1. Пара [a,b] означает: курс a нужно закончить до b. За семестр можно пройти любое число доступных курсов, каждый занимает один семестр. Верните минимум семестров для всех курсов или −1 при цикле. Для n = 0 ответ 0.

topological-sortgraphbfs
Тестов: 6
Сложно

Чистая симуляция LRU-кеша

Обработайте операции над LRU-кешем ёмкости capacity. ["put", key, value] записывает значение и делает ключ самым свежим. ["get", key] возвращает значение или −1 и обновляет свежесть найденного ключа. Верните массив ответов только для get. При переполнении удаляется давно не использованный ключ.

hash-mapcachesimulation
Тестов: 6
Сложно

Расстояние Левенштейна

Найдите минимальное число вставок, удалений и замен одного символа, превращающих a в b. Каждая операция стоит 1. Используются только строчные латинские буквы.

dynamic-programmingstrings
Тестов: 6
Средне

Минимальное число монет

Из монет заданных номиналов наберите amount минимальным числом монет. Каждый номинал можно использовать сколько угодно раз. Если сумму набрать нельзя, верните −1; для суммы 0 верните 0.

dynamic-programmingarrays
Тестов: 6
Средне

Длина строго возрастающей подпоследовательности

Найдите длину самой длинной строго возрастающей подпоследовательности. Элементы не обязаны идти подряд, но их исходный порядок сохраняется. Одинаковые значения не увеличивают длину.

binary-searchdynamic-programming
Тестов: 6