LeetCode Community
9.76K subscribers
802 photos
5 videos
1.1K links
Сообщество пользователей-фанатов LeetCode. 🦾

Ссылка для друга: https://t.me/+fhGikrkptrpkYmIy

По всем вопросам: @mascarov_valentin или @adv_and_pr

НЕ являемся официальным каналом leetcode.com.

№4974320675
Download Telegram
Максимальное произведение разделенного бинарного дерева

Сложность: Средняя

Условие задачи: дается корень бинарного дерева, необходимо ражзделить его на две части таким образом, чтобы при извлечении одного ребра произведение сумм двух поддеревьев было максимальным.

Необходимо вычислить это произведение. Так как произведение может быть слишком большим, то необходимо посчитать результат по модулю 1е9 + 7.

Пример:

Ввод:
root = [1,2,3,4,5,6]
Вывод:
110
Объяснение:
*во вложении

Решение задачи
👍1
Максимальная сумма по ребрам бинарного дерева

Сложность: Тяжёлая

Условие задачи: путем в бинарном дереве является последовательность узлов, где каждая пара соседних узлов в последовательности соединена ребром. Узел может появляться в последовательности лишь единожды. Путь не обязательно должен проходить через корень дерева.

Сумма по ребрам в дереве представляет из себя сумму значений из узлов.

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

Пример:

Ввод:
root = [-10,9,20,null,null,15,7]
Вывод:
42
Объяснение:
путь 15 -> 20 -> 7 имеет наибольшую сумму в дереве.

Решение задачи
👍1
Подъем по ступеням

Сложность: Лёгкая

Условие задачи: человек поднимается по ступенькам. Для подъема на вершину лестницы необходимо сделать n шагов.

При каждом шаге можно делать выбор: подниматься на 1 или же на 2 шага. Нужно посчитать сколькими способами можно подняться на вершину.

Пример:

Ввод:
n = 2
Вывод: 2
Объяснение: существует лишь два варианта:
1. 1 шаг + 1 шаг;
2. 2 шага.

Ввод: n = 3
Вывод: 3
Объяснение:
1. 1 шаг + 1 шаг + 1 шаг
2. 1 шаг + 2 шага
3. 2 шага + 1 шаг

Решение задачи
👍1
Атака Тимо

Сложность: Лёгкая

Условие задачи: происходит абстрактная ситуация наш персонаж Тимо атакует своего соперника Эша. Результатом атаки является отравление оппонента на duration секунд. То есть начав атаку в момент времени t отравление будет длиться в промежуток времени [t, t + duration - 1].

Если Тимо решит нанести ещё один удар до окончания действия отравления от предыдущего, то итоговое отравление закончится через duration секунд.

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

Пример:

Ввод:
timeSeries = [1,4], duration = 2
Вывод: 4

Решение задачи
1👍1
Возрастающая подпоследовательность наибольшей длины

Сложность: Средняя

Условие задачи: даётся массив, необходимо вычислить наибольшую длину строго возрастающей подпоследовательности.

Пример:

Ввод:
nums = [10,9,2,5,3,7,101,18]
Вывод:
4
Объяснение:
подпоследовательность [2,3,7,101] имеет наибольшую длину.

Решение задачи
1👍1
Ряд клавиатуры

Сложность: Лёгкая

Условие задачи: дается массив из строк, необходимо вернуть те строки из массива, которые могут быть набраны лишь при использовании знаков из одного ряда.

Пример:

Ввод:
words = ["Hello","Alaska","Dad","Peace"]
Вывод:
["Alaska","Dad"]
Объяснение:

Ввод:
words = ["omk"]
Вывод:
[ ]

Решение задачи
👍1
Сумма вдоль столбцов

Сложность: Средняя

Условие задачи: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.

Есть условие на движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.

Пример:

Ввод:
matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Объяснение: *во вложении

Решение задачи
👍1
Поиск моды в бинарном дереве поиска

Сложность: Лёгкая

Условие задачи: дается бинарное дерево поиска, содержащее дубликаты, необходимо вывести все моды, встречающиеся в дереве.

Мода - элемент, встречающийся чаще всех в какой-либо структуре данных.

Пример:

Ввод:
root = [1,null,2,2]
Вывод: [2]
Объяснение: * во вложении

Ввод: root = [0]
Вывод:
[0]

Решение задачи
👍1
Идеальное число

Сложность: Лёгкая

Условие задачи: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.

Необходимо проверить входное число на идеальность.

Пример:

Ввод:
num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14

Ввод: num = 7
Вывод: false

Решение задачи
👍1👎1
Минимальная разница по модулю

Сложность: Лёгкая

Условие задачи: дается бинарное дерево поиск, необходимо найти минимальную разницу между двумя его вершинами.

Пример:

Ввод:
root = [4,2,6,1,3]
Вывод: 1

Ввод: root = [1,0,48,null,null,12,49]
Вывод: 1

Решение задачи
1
Нахождение существующего пути

Сложность: Лёгкая

Условие задачи: дается ненаправленный граф, ребра которого представлены в массиве. Между каждой парой узлов в дереве имеется не более одного ребра.

Необходимо определить существует ли корректная дорога между узлом source и destination.

Пример:

Ввод:
n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
Вывод: true
Объяснение: *во вложении

Ввод: n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
Вывод: false

Решение задачи
👍1
Отрезки пересечения отрезков

Сложность: Средняя

Условие задачи: дается два массива, каждый элемент в котором представлен отрезком, значения которого соответствуют соответственно началу и концу.

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

Пример:

Ввод:
firstList = [[0,2],[5,10],[13,23],[24,25]], secondList = [[1,5],[8,12],[15,24],[25,26]]
Вывод: [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]

Ввод: firstList = [[1,3],[5,9]], secondList = []
Вывод: [ ]

Решение задачи
1👍1
Партиционированние массива

Сложность: Лёгкая

Условие задачи: дается целочисленный массив, содержащий 2n-чисел, надо сгруппировать эти числа в n-пар (a1, b1), (a2, b2), ..., (an, bn), таких что сумма min(ai, bi) для всех i - максимальна. Необходимо вычислить максимальную сумму.

Пример:

Ввод: nums = [1,4,3,2]
Вывод:
4
Объяснение:

Комбинации пар :
1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4 (максимум).

Решение задачи
👍2
Длиннейшая подпоследовательность с ограниченной суммой

Сложность: Лёгкая

Условие задачи: дается целочисленный массив nums длины n и целочисленный массив queries длины m.

Необходимо вернуть ответ в массиве, где i-ый элемент массива - максимальная длина подпоследовательности, которую можно вычислить в массиве nums, так что сумма этих элементов будет не больше, чем queries[i].

Пример:

Ввод:
nums = [4,5,2,1], queries = [3,10,21]
Вывод: [2,3,4]

Решение задачи
👍2
Извлечение камней для минимизации общего количества

Сложность: Средняя

Условие задачи: дается проиндексированный с нуля целочисленный массив piles, где каждое число отображает количество камней в соответствующей куче. Помимо этого дается также целое число k - количество раз, которое надо применить операцию: выбрать кучу камней и извлечь из нее floor(piles[i] / 2) камней.

Данную операцию можно производить над одной и той же кучей несколько раз подряд.

Необходимо вычислить минимальное количество итогового оставшегося количества камней после применения данной операции k-раз.

Пример:

Ввод:
piles = [5,4,9], k = 2
Вывод: 12

Ввод:
piles = [4,3,6,7], k = 3
Вывод: 12

Решение задачи
👍1
Максимальное количество сумок, полностью заполненных камнями

Сложность: Средняя

Условие задачи: дается n-сумок, пронумерованных с нуля. Дается также два массива, проиндексированных аналогичным образом: capacity и rocks. i-а сумка может вмещать capacity[i] камней и в текущий момент содержит уже rocks[i] каменей. Помимо этого дается еще additionalRocks, число камней, которые можно добавить в произвольную сумку.

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

Пример:

Ввод:
capacity = [2,3,4,5], rocks = [1,2,4,4], additionalRocks = 2
Вывод:
3

Ввод:
capacity = [10,2,2], rocks = [2,2,0], additionalRocks = 100
Вывод:
3

Решение задачи
👍1
Разность по потомкам

Сложность: Лёгкая

Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.

Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.

Пример:

Ввод:
root = [1,2,3]
Вывод:
1

Ввод:
root = [4,2,9,3,5,null,7]
Вывод:
15
Объяснение: *во вложении

Решение задачи
👍1
Строка-перевертыш

Сложность: Лёгкая

Условие задачи: дается две строки s и goal, верните true тогда и только тогда, когда s может стать goal после некоторого количества смен в субботу.

Сдвиг на s состоит в перемещении крайнего левого символа s в крайнюю правую позицию.

Например, если s = "abcde", то после одной смены это будет "bcdea".

Пример:

Ввод:
s = "abcde", goal = "cdeab"
Вывод: true

Ввод: s = "abcde", goal = "abced"
Вывод: false

Решение задачи
👍1
Суммы подмассивов, кратные K

Сложность: Средняя

Условие задачи: дается целочисленный массив nums и целое число k, верните количество непустых подмассивов, сумма которых делится на k.

Подмассив - это непрерывная часть массива.

Пример:

Ввод:
nums = [4,5,0,-2,-3,1], k = 5
Вывод: 7
Объяснение: [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

Ввод: nums = [5], k = 9
Вывод: 0

Решение задачи
👍1
Восстановить IP

Сложность: Средняя

Условие задачи: действительный IP-адрес состоит ровно из четырех целых чисел, разделенных одиночными точками. Каждое целое число находится в диапазоне от 0 до 255 (включительно) и не может содержать начальных нулей.

Например, "0.1.2.201" и "192.168.1.1" являются допустимыми IP-адресами, но "0.011.255.245", "192.168.1.312" и "192.168@1.1 " являются недопустимыми IP-адресами.
Учитывая строку s, содержащую только цифры, верните все возможные действительные IP-адреса, которые могут быть сформированы путем вставки точек в s. Вам не разрешается изменять порядок или удалять какие-либо цифры в s. Вы можете вернуть действительные IP-адреса в любом порядке.

Пример:

Ввод:
s = "25525511135"
Вывод:
["255.255.11.135","255.255.111.35"]

Ввод:
s = "0000"
Вывод:
["0.0.0.0"]

Решение задачи
👍41