Поиск моды в бинарном дереве поиска
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, содержащее дубликаты, необходимо вывести все моды, встречающиеся в дереве.
Мода - элемент, встречающийся чаще всех в какой-либо структуре данных.
Пример:
Ввод: root = [1,null,2,2]
Вывод: [2]
Объяснение: * во вложении
Ввод: root = [0]
Вывод: [0]
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, содержащее дубликаты, необходимо вывести все моды, встречающиеся в дереве.
Мода - элемент, встречающийся чаще всех в какой-либо структуре данных.
Пример:
Ввод: root = [1,null,2,2]
Вывод: [2]
Объяснение: * во вложении
Ввод: root = [0]
Вывод: [0]
Решение задачи
👍1
Идеальное число
Сложность: Лёгкая
Условие задачи: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.
Необходимо проверить входное число на идеальность.
Пример:
Ввод: num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14
Ввод: num = 7
Вывод: false
Решение задачи
Сложность: Лёгкая
Условие задачи: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.
Необходимо проверить входное число на идеальность.
Пример:
Ввод: num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14
Ввод: num = 7
Вывод: false
Решение задачи
👍3
Общая подпоследовательность наибольшей длины
Сложность: Средняя
Условие задачи: на вход подаются две строки, необходимо вывести их наидлиннейшую общую подпоследовательность, а точнее ее длину.
Подпоследовательность - совокупность символов, не обязательно смежных, идущих слева направо в том же порядке, что и в исходной строке.
Пример:
Ввод: text1 = "abcde", text2 = "ace"
Вывод: 3
Объяснение: "ace"
Ввод: text1 = "abc", text2 = "def"
Вывод: 0
Решение задачи
Сложность: Средняя
Условие задачи: на вход подаются две строки, необходимо вывести их наидлиннейшую общую подпоследовательность, а точнее ее длину.
Подпоследовательность - совокупность символов, не обязательно смежных, идущих слева направо в том же порядке, что и в исходной строке.
Пример:
Ввод: text1 = "abcde", text2 = "ace"
Вывод: 3
Объяснение: "ace"
Ввод: text1 = "abc", text2 = "def"
Вывод: 0
Решение задачи
👍1
Минимальное количество ребер
Сложность: Средняя
Условие задачи: дается ациклический направленный граф с вершинами, пронумерованными от 0 до n-1.
Необходимо найти наименьшее количество ребер в графе такое что, можно было бы обойти все узлы.
Пример:
Ввод: n = 6, edges = [[0,1],[0,2],[2,5],[3,4],[4,2]]
Вывод: [0,3]
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: дается ациклический направленный граф с вершинами, пронумерованными от 0 до n-1.
Необходимо найти наименьшее количество ребер в графе такое что, можно было бы обойти все узлы.
Пример:
Ввод: n = 6, edges = [[0,1],[0,2],[2,5],[3,4],[4,2]]
Вывод: [0,3]
Объяснение: *во вложении
Решение задачи
👍2
Минимальная разница по модулю
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиск, необходимо найти минимальную разницу между двумя его вершинами.
Пример:
Ввод: root = [4,2,6,1,3]
Вывод: 1
Ввод: root = [1,0,48,null,null,12,49]
Вывод: 1
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиск, необходимо найти минимальную разницу между двумя его вершинами.
Пример:
Ввод: root = [4,2,6,1,3]
Вывод: 1
Ввод: root = [1,0,48,null,null,12,49]
Вывод: 1
Решение задачи
👍3
Друзья, на связи ваш админ.
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
👍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
Решение задачи
Сложность: Лёгкая
Условие задачи: дается ненаправленный граф, ребра которого представлены в массиве. Между каждой парой узлов в дереве имеется не более одного ребра.
Необходимо определить существует ли корректная дорога между узлом 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
Решение задачи
👍5
Отрезки пересечения отрезков
Сложность: Средняя
Условие задачи: дается два массива, каждый элемент в котором представлен отрезком, значения которого соответствуют соответственно началу и концу.
Необходимо вывести результирующий массив, внутри которого будут представлены отрезки пересечения двух исходных массивов.
Пример:
Ввод: 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 = []
Вывод: [ ]
Решение задачи
Сложность: Средняя
Условие задачи: дается два массива, каждый элемент в котором представлен отрезком, значения которого соответствуют соответственно началу и концу.
Необходимо вывести результирующий массив, внутри которого будут представлены отрезки пересечения двух исходных массивов.
Пример:
Ввод: 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 = []
Вывод: [ ]
Решение задачи
👍11
Разворот строки II
Сложность: Лёгкая
Условие задачи: дается строка и целое число k, необходимо развернуть первые k символов на каждые 2k символов, отсчитываемых с начала.
Если есть несколько символов больших k, необходимо развернуть все из них. Если есть меньше, чем 2k символов, но при этом больше или равно k символов, то необходимо оставить все как есть.
Пример:
Ввод: s = "abcdefg", k = 2
Вывод: "bacdfeg"
Ввод: s = "abcd", k = 2
Вывод: "bacd"
Решение задачи
Сложность: Лёгкая
Условие задачи: дается строка и целое число k, необходимо развернуть первые k символов на каждые 2k символов, отсчитываемых с начала.
Если есть несколько символов больших k, необходимо развернуть все из них. Если есть меньше, чем 2k символов, но при этом больше или равно k символов, то необходимо оставить все как есть.
Пример:
Ввод: s = "abcdefg", k = 2
Вывод: "bacdfeg"
Ввод: s = "abcd", k = 2
Вывод: "bacd"
Решение задачи
👍9
Сумма расстояний в дереве
Сложность: Тяжёлая
Условие задачи: имеется ненаправленное дерево, соединяющее n узлов пронумерованных от 0 до n-1.
Дается также целое число n, а также массив ребер, соединяющих узлы.
Необходимо вычислить массив, состоящий из длин между узлами, находящимися в исходном массиве edges.
Пример:
Ввод: n = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]
Вывод: [8,12,6,10,10,10]
Объяснение:
Дистанция между узлом состоит из следующих длин:
dist(0,1) + dist(0,2) + dist(0,3) + dist(0,4) + dist(0,5) = 1 + 1 + 2 + 2 + 2 = 8.
Решение задачи
Сложность: Тяжёлая
Условие задачи: имеется ненаправленное дерево, соединяющее n узлов пронумерованных от 0 до n-1.
Дается также целое число n, а также массив ребер, соединяющих узлы.
Необходимо вычислить массив, состоящий из длин между узлами, находящимися в исходном массиве edges.
Пример:
Ввод: n = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]
Вывод: [8,12,6,10,10,10]
Объяснение:
Дистанция между узлом состоит из следующих длин:
dist(0,1) + dist(0,2) + dist(0,3) + dist(0,4) + dist(0,5) = 1 + 1 + 2 + 2 + 2 = 8.
Решение задачи
👍5
Партиционированние массива
Сложность: Лёгкая
Условие задачи: дается целочисленный массив, содержащий 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 (максимум).
Решение задачи
Сложность: Лёгкая
Условие задачи: дается целочисленный массив, содержащий 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 (максимум).
Решение задачи
👍8❤3
Длиннейшая подпоследовательность с ограниченной суммой
Сложность: Лёгкая
Условие задачи: дается целочисленный массив nums длины n и целочисленный массив queries длины m.
Необходимо вернуть ответ в массиве, где i-ый элемент массива - максимальная длина подпоследовательности, которую можно вычислить в массиве nums, так что сумма этих элементов будет не больше, чем queries[i].
Пример:
Ввод: nums = [4,5,2,1], queries = [3,10,21]
Вывод: [2,3,4]
Решение задачи
Сложность: Лёгкая
Условие задачи: дается целочисленный массив nums длины n и целочисленный массив queries длины m.
Необходимо вернуть ответ в массиве, где i-ый элемент массива - максимальная длина подпоследовательности, которую можно вычислить в массиве nums, так что сумма этих элементов будет не больше, чем queries[i].
Пример:
Ввод: nums = [4,5,2,1], queries = [3,10,21]
Вывод: [2,3,4]
Решение задачи
👍6🎉3
Извлечение камней для минимизации общего количества
Сложность: Средняя
Условие задачи: дается проиндексированный с нуля целочисленный массив piles, где каждое число отображает количество камней в соответствующей куче. Помимо этого дается также целое число k - количество раз, которое надо применить операцию: выбрать кучу камней и извлечь из нее floor(piles[i] / 2) камней.
Данную операцию можно производить над одной и той же кучей несколько раз подряд.
Необходимо вычислить минимальное количество итогового оставшегося количества камней после применения данной операции k-раз.
Пример:
Ввод: piles = [5,4,9], k = 2
Вывод: 12
Ввод: piles = [4,3,6,7], k = 3
Вывод: 12
Решение задачи
Сложность: Средняя
Условие задачи: дается проиндексированный с нуля целочисленный массив piles, где каждое число отображает количество камней в соответствующей куче. Помимо этого дается также целое число k - количество раз, которое надо применить операцию: выбрать кучу камней и извлечь из нее floor(piles[i] / 2) камней.
Данную операцию можно производить над одной и той же кучей несколько раз подряд.
Необходимо вычислить минимальное количество итогового оставшегося количества камней после применения данной операции k-раз.
Пример:
Ввод: piles = [5,4,9], k = 2
Вывод: 12
Ввод: piles = [4,3,6,7], k = 3
Вывод: 12
Решение задачи
👍6
Максимальное количество сумок, полностью заполненных камнями
Сложность: Средняя
Условие задачи: дается n-сумок, пронумерованных с нуля. Дается также два массива, проиндексированных аналогичным образом: capacity и rocks. i-а сумка может вмещать capacity[i] камней и в текущий момент содержит уже rocks[i] каменей. Помимо этого дается еще additionalRocks, число камней, которые можно добавить в произвольную сумку.
Необходимо вычислить максимальное количество сумок, которое получится при ситуации, когда все дополнительные камни размещены.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дается 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Решение задачи
👍5
Разность по потомкам
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Объяснение: *во вложении
Решение задачи
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод:
root = [1,2,3]Вывод:
1Ввод:
root = [4,2,9,3,5,null,7]Вывод:
15Объяснение: *во вложении
Решение задачи
👍4
Разность по потомкам
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Объяснение: *во вложении
Решение задачи
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод:
root = [1,2,3]Вывод:
1Ввод:
root = [4,2,9,3,5,null,7]Вывод:
15Объяснение: *во вложении
Решение задачи
👍3
Разность по потомкам
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Объяснение: *во вложении
Решение задачи
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод:
root = [1,2,3]Вывод:
1Ввод:
root = [4,2,9,3,5,null,7]Вывод:
15Объяснение: *во вложении
Решение задачи
👍3
Строка-перевертыш
Сложность: Лёгкая
Условие задачи: дается две строки s и goal, верните true тогда и только тогда, когда s может стать goal после некоторого количества смен в субботу.
Сдвиг на s состоит в перемещении крайнего левого символа s в крайнюю правую позицию.
Например, если s = "abcde", то после одной смены это будет "bcdea".
Пример:
Ввод: s = "abcde", goal = "cdeab"
Вывод: true
Ввод: s = "abcde", goal = "abced"
Вывод: false
Решение задачи
Сложность: Лёгкая
Условие задачи: дается две строки s и goal, верните true тогда и только тогда, когда s может стать goal после некоторого количества смен в субботу.
Сдвиг на s состоит в перемещении крайнего левого символа s в крайнюю правую позицию.
Например, если s = "abcde", то после одной смены это будет "bcdea".
Пример:
Ввод: s = "abcde", goal = "cdeab"
Вывод: true
Ввод: s = "abcde", goal = "abced"
Вывод: false
Решение задачи
👍3🤔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
Решение задачи
Сложность: Средняя
Условие задачи: дается целочисленный массив 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
Решение задачи
👍3
Восстановить 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-адреса в любом порядке.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: действительный 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"]Решение задачи
👍7❤1