Последний из камней
Сложность: Лёгкая
Условие задачи: на вход подается массив из камней, где i-ый элемент обозначает вес соответствующего камня.
Осуществляется игра в камни: берутся два камня с наибольшим весом и сталкиваются. Результат их столкновения может быть следующим:
- оба уничтожаются при условии одинакового веса;
- при условии неравенства весов из веса большего вычитается меньший вес, а после снова добавляется в массив.
Игра продолжается до тех пор пока есть хотя бы один камень, необходимо вернуть это самый последний вес. При отсутствии камней в конце - вернуть ноль.
Пример:
Ввод: stones = [2,7,4,1,8,1]
Вывод: 1
Решение задачи
Сложность: Лёгкая
Условие задачи: на вход подается массив из камней, где i-ый элемент обозначает вес соответствующего камня.
Осуществляется игра в камни: берутся два камня с наибольшим весом и сталкиваются. Результат их столкновения может быть следующим:
- оба уничтожаются при условии одинакового веса;
- при условии неравенства весов из веса большего вычитается меньший вес, а после снова добавляется в массив.
Игра продолжается до тех пор пока есть хотя бы один камень, необходимо вернуть это самый последний вес. При отсутствии камней в конце - вернуть ноль.
Пример:
Ввод: stones = [2,7,4,1,8,1]
Вывод: 1
Решение задачи
👍6
Текущая длительность котировок
Сложность: Средняя
Условие задачи: разработайте алгоритм, который сохраняет котировки некоторой акции текущего дня и осуществляет подсчёт, сколько дней до этого стоимость бумаг была меньше или равна цена на текущий день (включая текущий день).
Пример:
Ввод:
Сложность: Средняя
Условие задачи: разработайте алгоритм, который сохраняет котировки некоторой акции текущего дня и осуществляет подсчёт, сколько дней до этого стоимость бумаг была меньше или равна цена на текущий день (включая текущий день).
Пример:
Ввод:
["StockSpanner", "next", "next", "next", "next", "next", "next", "next"]
[[], [100], [80], [60], [70], [60], [75], [85]]
Вывод: [null, 1, 1, 1, 2, 1, 4, 6]
Объяснение:StockSpanner stockSpanner = new StockSpanner();
stockSpanner.next(100); // return 1
stockSpanner.next(80); // return 1
stockSpanner.next(60); // return 1
stockSpanner.next(70); // return 2
stockSpanner.next(60); // return 1
stockSpanner.next(75); // return 4, так как цены за четыре предыдущих дня (включая сегодняшний) были меньше или равны;
stockSpanner.next(85); // return 6
Решение задачи👍3
Make the string great AGAIN
Сложность: Лёгкая
Условие задачи: дается строка, состоящая из латинских букв как в нижнем, так и в вернем регистре.
Строка считается качественной, если две соседние буквы не представлены одной и той же буквой, но в разных регистрах. Такие буквы удаляются до тех пор, пока строка не станет качественной.
Вернуть надо строку, над которой были совершены все преобразования. Гарантируется уникальность ответа.
Пустая строка по умолчанию является качественной.
Пример:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дается строка, состоящая из латинских букв как в нижнем, так и в вернем регистре.
Строка считается качественной, если две соседние буквы не представлены одной и той же буквой, но в разных регистрах. Такие буквы удаляются до тех пор, пока строка не станет качественной.
Вернуть надо строку, над которой были совершены все преобразования. Гарантируется уникальность ответа.
Пустая строка по умолчанию является качественной.
Пример:
Ввод:
s = "leEeetcode"Вывод:
"leetcode"Решение задачи
👍4
Подсчет узлов бинарного дерева
Сложность: Средняя
Условие задачи: дается корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.
Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.
Необходимо разработать алгоритм с временной сложностью менее O(n).
Пример:
Ввод: root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: дается корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.
Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.
Необходимо разработать алгоритм с временной сложностью менее O(n).
Пример:
Ввод: root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении
Решение задачи
👍5
Произведение подмассива меньше K
Сложность: Средняя
Условие задачи: дается массив и целевое значение произведения, необходимо вернуть количесво подмассивов, в которых последовательные элементы будут при умножении давать значение меньшее или равное целевому.
Пример:
Ввод:
Вывод: 8
Объяснение:
Решение задачи
Сложность: Средняя
Условие задачи: дается массив и целевое значение произведения, необходимо вернуть количесво подмассивов, в которых последовательные элементы будут при умножении давать значение меньшее или равное целевому.
Пример:
Ввод:
nums = [10,5,2,6], k = 100Вывод: 8
Объяснение:
[10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6]Решение задачи
👍3
Два огромных океана
Сложность: Средняя
Условие задачи: на вход подается двумерная матрица, которая отображает рельеф острова (чем больше значение в ячейке, тем выше рельеф в текущей точке относительно уровня моря), окруженного двумя океанами: Тихим и Атлантическим.
После того, как прошел бурный дождь по острову начала стекать вода. Жидкость может течь лишь в том направлении, где рельеф в текущей точке не меньше (по значению на решетке), чем рельеф в соседней.
Необходимо выявить точки, из которых дождевая вода может попасть и в Тихий океан и в Атлантический.
Пример:
Ввод: heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]
Вывод: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается двумерная матрица, которая отображает рельеф острова (чем больше значение в ячейке, тем выше рельеф в текущей точке относительно уровня моря), окруженного двумя океанами: Тихим и Атлантическим.
После того, как прошел бурный дождь по острову начала стекать вода. Жидкость может течь лишь в том направлении, где рельеф в текущей точке не меньше (по значению на решетке), чем рельеф в соседней.
Необходимо выявить точки, из которых дождевая вода может попасть и в Тихий океан и в Атлантический.
Пример:
Ввод: heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]
Вывод: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]
Объяснение: *во вложении
Решение задачи
👍1
Удаление дубликатов из отсортированного связного списка
Сложность: Средняя
Условие задачи: дается указатель на начало отсортированного связного списка, необходимо удалить все дублируемые значения в списке. Надо вернуть связный список, также отсортированный.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дается указатель на начало отсортированного связного списка, необходимо удалить все дублируемые значения в списке. Надо вернуть связный список, также отсортированный.
Пример:
Ввод:
head = [1,2,3,3,4,4,5]Вывод:
[1,2,5]Ввод:
head = [1,1,1,2,3]Вывод:
[2,3]Решение задачи
👍4
Преобразование параметров матрицы
Сложность: Лёгкая
Условие задачи: дана матрица (
Значения в новой матрицы должны быть взяты из исходной.
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: дана матрица (
m x n), необходимо выполнить преобразования чтобы матрица имела параметры количества строк и столбцов (r x c). Значения в новой матрицы должны быть взяты из исходной.
Пример:
Ввод:
mat = [[1,2],[3,4]], r = 1, c = 4
Вывод: [[1,2,3,4]]
Ввод: mat = [[1,2],[3,4]], r = 2, c = 4
Вывод: [[1,2],[3,4]]
Решение задачи👍2
Диаметр бинарного дерева
Сложность: Лёгкая
Условие задачи: дан корневой элемент бинарного дерева, необходимо расчитать диаметр бинарного дерева.
Диаметр бинарного дерева - наибольшая длина между двумя любыми узлами в дереве (необязательно включая корневой элемент всего дерева).
Длина между двумя узлами дерева - количество ребер между ними.
Пример:
Ввод: root = [1,2,3,4,5]
Вывод: 3
Объяснение: длина пути [4,2,1,3] или пути [5,2,1,3].
Ввод: root = [1,2]
Вывод: 1
Решение задачи
Сложность: Лёгкая
Условие задачи: дан корневой элемент бинарного дерева, необходимо расчитать диаметр бинарного дерева.
Диаметр бинарного дерева - наибольшая длина между двумя любыми узлами в дереве (необязательно включая корневой элемент всего дерева).
Длина между двумя узлами дерева - количество ребер между ними.
Пример:
Ввод: root = [1,2,3,4,5]
Вывод: 3
Объяснение: длина пути [4,2,1,3] или пути [5,2,1,3].
Ввод: root = [1,2]
Вывод: 1
Решение задачи
👍2
Поиск суммы в бинарном дереве поиска
Сложность: Лёгкая
Условие задачи: дано бинарное дерево поиска, а также целевое значение. Необходимо определить, имеется ли в дереве два таких значения, в сумме дающие целевое значение, или же нет.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дано бинарное дерево поиска, а также целевое значение. Необходимо определить, имеется ли в дереве два таких значения, в сумме дающие целевое значение, или же нет.
Пример:
Ввод:
root = [5,3,6,2,4,null,7], k = 9Вывод:
trueВвод:
root = [5,3,6,2,4,null,7], k = 28Вывод:
falseРешение задачи
👍2
Калькулятор II
Сложность: Средняя
Условие задачи: на вход подается строка, которая представляет математическое выражение. Необходимо вывести результат математического выражения.
Целочисленное деление округляет число в сторону нуля.
Нельзя пользоваться встроенными функциями.
Пример:
Ввод: s = "3+2*2"
Вывод: 7
Ввод: s = " 3/2 "
Вывод: 1
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается строка, которая представляет математическое выражение. Необходимо вывести результат математического выражения.
Целочисленное деление округляет число в сторону нуля.
Нельзя пользоваться встроенными функциями.
Пример:
Ввод: s = "3+2*2"
Вывод: 7
Ввод: s = " 3/2 "
Вывод: 1
Решение задачи
👍6❤1👎1
Наикратчайший путь в бинарной матрице
Сложность: Средняя
Условие задачи: дана квадратная матрица, необходимо посчитать длину (количество посещенных клеток) самой короткой тропы.
Путь должен соответствовать следующим условиям:
- начинаться в левой верхней клетке, заканчиваться в правой нижней;
- все ячейки по пути должны иметь нулевые значения;
- клетки по пути могут быть соединены в любом из 8-ми направлений.
В случае отсутствии подобного пути, вернуть -1.
Пример:
Ввод: grid = [[0,1],[1,0]]
Вывод: 2
Ввод: grid = [[0,0,0],[1,1,0],[1,1,0]]
Вывод: 4
Решение задачи
Сложность: Средняя
Условие задачи: дана квадратная матрица, необходимо посчитать длину (количество посещенных клеток) самой короткой тропы.
Путь должен соответствовать следующим условиям:
- начинаться в левой верхней клетке, заканчиваться в правой нижней;
- все ячейки по пути должны иметь нулевые значения;
- клетки по пути могут быть соединены в любом из 8-ми направлений.
В случае отсутствии подобного пути, вернуть -1.
Пример:
Ввод: grid = [[0,1],[1,0]]
Вывод: 2
Ввод: grid = [[0,0,0],[1,1,0],[1,1,0]]
Вывод: 4
Решение задачи
👍2
Сдвиг нулей
Сложность: Лёгкая
Условие задачи: дан массив, необходимо переместить все нулевые элементы к концу массива, к его правой границе.
Решение должно изменять исходный массив, не используя дополнительной памяти.
Пример:
Ввод: nums = [0,1,0,3,12]
Вывод: [1,3,12,0,0]
Ввод: nums = [0]
Вывод: [0]
Решение задачи
Сложность: Лёгкая
Условие задачи: дан массив, необходимо переместить все нулевые элементы к концу массива, к его правой границе.
Решение должно изменять исходный массив, не используя дополнительной памяти.
Пример:
Ввод: nums = [0,1,0,3,12]
Вывод: [1,3,12,0,0]
Ввод: nums = [0]
Вывод: [0]
Решение задачи
👍13
Содержание дубликатов II
Сложность: Лёгкая
Условие задачи: дается массив из целых чисел и число k. Необходимо вернуть true, если существуют два уникальных индекса, которые удовлетворяют условиям:
- nums[i] == nums[j];
- abs(i - j) <= k.
Пример:
Ввод: nums = [1,2,3,1], k = 3
Вывод: true
Ввод: nums = [1,0,1,1], k = 1
Вывод: true
Решение задачи
Сложность: Лёгкая
Условие задачи: дается массив из целых чисел и число k. Необходимо вернуть true, если существуют два уникальных индекса, которые удовлетворяют условиям:
- nums[i] == nums[j];
- abs(i - j) <= k.
Пример:
Ввод: nums = [1,2,3,1], k = 3
Вывод: true
Ввод: nums = [1,0,1,1], k = 1
Вывод: true
Решение задачи
👍6
Ключи и комнаты
Сложность: Средняя
Условие задачи: есть
При посещении какой-либо комнаты в ней находится определенная связка уникальных ключей, номер ключа означет номер комнаты, для которой он отпирает дверь. Можно использовать сразу все связку ключей.
На вход подается массив комнат, где в i-ячейке дается список ключей, находящихся в текущей комнате. Необходимо определеть, можно ли обойти все комнаты.
Пример:
Ввод:
Вывод:
Объяснение: из 0 комнаты можно попасть в 1, из 1 во 2, из 2 в 3.
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: есть
n комнат проиндексированных с 0, все они закрыты кроме комнаты с номером 0. Необходимо посетить все комнаты, однако этого нельзя сдеать не имея ключа от соответствующей закрытой двери. При посещении какой-либо комнаты в ней находится определенная связка уникальных ключей, номер ключа означет номер комнаты, для которой он отпирает дверь. Можно использовать сразу все связку ключей.
На вход подается массив комнат, где в i-ячейке дается список ключей, находящихся в текущей комнате. Необходимо определеть, можно ли обойти все комнаты.
Пример:
Ввод:
rooms = [[1],[2],[3],[]]Вывод:
trueОбъяснение: из 0 комнаты можно попасть в 1, из 1 во 2, из 2 в 3.
Ввод:
rooms = [[1,3],[3,0,1],[2],[0]]Вывод:
falseРешение задачи
👍4
Форматирование
Сложность: Лёгкая
Условие задачи: дается номер водительского удостоверения, представленный строкой. Символы в номере могут быть разбиты на n+1 групп. Также дается число k.
Необходимо преобразовать номер в строку по k-символов. Однако лишь первая группа может быть меньше, чем k-символов. Помимо этого все символы нижнего регистра необходимо изменить на верхний регистр.
Пример:
Ввод: s = "5F3Z-2e-9-w", k = 4
Вывод: "5F3Z-2E9W"
Объяснение:
Ввод: s = "2-5g-3-J", k = 2
Вывод: s = "2-5g-3-J", k = 2
Решение задачи
Сложность: Лёгкая
Условие задачи: дается номер водительского удостоверения, представленный строкой. Символы в номере могут быть разбиты на n+1 групп. Также дается число k.
Необходимо преобразовать номер в строку по k-символов. Однако лишь первая группа может быть меньше, чем k-символов. Помимо этого все символы нижнего регистра необходимо изменить на верхний регистр.
Пример:
Ввод: s = "5F3Z-2e-9-w", k = 4
Вывод: "5F3Z-2E9W"
Объяснение:
Ввод: s = "2-5g-3-J", k = 2
Вывод: s = "2-5g-3-J", k = 2
Решение задачи
👍4
Сумма на отрезке
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, дается два числа low и high, необходимо посчитать сумму узлов дерева, находящихся в пределах данного отрезка [low, high].
Пример:
Ввод: root = [10,5,15,3,7,null,18], low = 7, high = 15
Вывод: 32
Объяснение: в данный отрезок входят числа 7, 10, 15.
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, дается два числа low и high, необходимо посчитать сумму узлов дерева, находящихся в пределах данного отрезка [low, high].
Пример:
Ввод: root = [10,5,15,3,7,null,18], low = 7, high = 15
Вывод: 32
Объяснение: в данный отрезок входят числа 7, 10, 15.
Решение задачи
👍2
Общая подпоследовательность наибольшей длины
Сложность: Средняя
Условие задачи: на вход подаются две строки, необходимо вывести их наидлиннейшую общую подпоследовательность, а точнее ее длину.
Подпоследовательность - совокупность символов, не обязательно смежных, идущих слева направо в том же порядке, что и в исходной строке.
Пример:
Ввод: text1 = "abcde", text2 = "ace"
Вывод: 3
Объяснение: "ace"
Ввод: text1 = "abc", text2 = "def"
Вывод: 0
Решение задачи
Сложность: Средняя
Условие задачи: на вход подаются две строки, необходимо вывести их наидлиннейшую общую подпоследовательность, а точнее ее длину.
Подпоследовательность - совокупность символов, не обязательно смежных, идущих слева направо в том же порядке, что и в исходной строке.
Пример:
Ввод: text1 = "abcde", text2 = "ace"
Вывод: 3
Объяснение: "ace"
Ввод: text1 = "abc", text2 = "def"
Вывод: 0
Решение задачи
👍4
Выход из лабиринта
Сложность: Средняя
Условие задачи: на вход подается двумерный массив, отражающий карту лабиринта ('.' - пустая ячейка, ' + ' - стена). Также на вход подается массив со входом, обозначающий изначальное положение, откуда будет искаться выход.
Двигаться можно лишь в четырёх направлениях: лево, право, верх, низ.
Необходимо вычислить количество шагов до ближайшего выхода или же вернуть -1 в случае отсутствия такового.
Пример:
Ввод: maze = [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
Вывод: 1
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается двумерный массив, отражающий карту лабиринта ('.' - пустая ячейка, ' + ' - стена). Также на вход подается массив со входом, обозначающий изначальное положение, откуда будет искаться выход.
Двигаться можно лишь в четырёх направлениях: лево, право, верх, низ.
Необходимо вычислить количество шагов до ближайшего выхода или же вернуть -1 в случае отсутствия такового.
Пример:
Ввод: maze = [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
Вывод: 1
Объяснение: *во вложении
Решение задачи
👍1
Максимальное число из 6 и 9
Сложность: Лёгкая
Условие задачи: дается число, полностью состоящее из 6 и 9. Необходимо вычислить наибольшее число в данной раскладке, при этом имея возможность заменить не более одной шестерки на девятку.
Пример:
Ввод: num = 9669
Вывод: 9969
Ввод: num = 9996
Вывод: 9999
Решение задачи
Сложность: Лёгкая
Условие задачи: дается число, полностью состоящее из 6 и 9. Необходимо вычислить наибольшее число в данной раскладке, при этом имея возможность заменить не более одной шестерки на девятку.
Пример:
Ввод: num = 9669
Вывод: 9969
Ввод: num = 9996
Вывод: 9999
Решение задачи
👍1