Слияние двух бинарных деревьев
Сложность: Лёгкая
Условие задачи: дается два бинарных дерева, надо осуществить их наложение друг на друга и вывести результат в новом дереве.
Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дается два бинарных дерева, надо осуществить их наложение друг на друга и вывести результат в новом дереве.
Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.
Пример:
Ввод:
root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]Вывод:
[3,4,5,5,4,null,7]Ввод:
root1 = [1], root2 = [1,2]Вывод:
[2,2]Решение задачи
👍6❤1👎1
Поток данных в виде непересекающихся интервалов
Сложность: Тяжёлая
Условие задачи: дается ввод потока данных из неотрицательных целых чисел a1, a2, ..., an, суммируйте числа, видимые до сих пор, в виде списка непересекающихся интервалов.
Реализуйте класс сводных диапазонов:
Сводные диапазоны() инициализирует объект пустым потоком.
void addNum(значение int) Добавляет целочисленное значение в поток.
int[][] getinterval() Возвращает сводку целых чисел в потоке в данный момент в виде списка непересекающихся интервалов [starti, endi]. Ответ должен быть отсортирован по началу.
Пример:
Ввод: ["SummaryRanges", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals"]
[[], [1], [], [3], [], [7], [], [2], [], [6], []]
Вывод: [null, null, [[1, 1]], null, [[1, 1], [3, 3]], null, [[1, 1], [3, 3], [7, 7]], null, [[1, 3], [7, 7]], null, [[1, 3], [6, 7]]]
Решение задачи
Сложность: Тяжёлая
Условие задачи: дается ввод потока данных из неотрицательных целых чисел a1, a2, ..., an, суммируйте числа, видимые до сих пор, в виде списка непересекающихся интервалов.
Реализуйте класс сводных диапазонов:
Сводные диапазоны() инициализирует объект пустым потоком.
void addNum(значение int) Добавляет целочисленное значение в поток.
int[][] getinterval() Возвращает сводку целых чисел в потоке в данный момент в виде списка непересекающихся интервалов [starti, endi]. Ответ должен быть отсортирован по началу.
Пример:
Ввод: ["SummaryRanges", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals", "addNum", "getIntervals"]
[[], [1], [], [3], [], [7], [], [2], [], [6], []]
Вывод: [null, null, [[1, 1]], null, [[1, 1], [3, 3]], null, [[1, 1], [3, 3], [7, 7]], null, [[1, 3], [7, 7]], null, [[1, 3], [6, 7]]]
Решение задачи
👍3❤1
Nое число Трибоначчи
Сложность: Лёгкая
Условие задачи: последовательность Трибоначчи Tn определяется следующим образом:
T0 = 0, T1 = 1, T2 = 1 и Tn+3 = Tn + Tn+1 + Tn+2 для n >= 0.
По заданному n, верните значение Tn.
Пример:
Ввод: n = 4
Вывод: 4
Объяснение:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
Решение задачи
Сложность: Лёгкая
Условие задачи: последовательность Трибоначчи Tn определяется следующим образом:
T0 = 0, T1 = 1, T2 = 1 и Tn+3 = Tn + Tn+1 + Tn+2 для n >= 0.
По заданному n, верните значение Tn.
Пример:
Ввод: n = 4
Вывод: 4
Объяснение:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
Решение задачи
👍3🔥1
Считалка
Сложность: Средняя
Условие задачи: последовательность "Посчитай и скажи" - это последовательность строк цифр, определяемая рекурсивной формулой:
посчитайте и скажите(1) = "1"
countAndSay(n) - это способ, которым вы бы "сказали" строку цифр из countAndSay(n-1), которая затем преобразуется в другую строку цифр.
Чтобы определить, как вы "произносите" строку цифр, разделите ее на минимальное количество подстрок таким образом, чтобы каждая подстрока содержала ровно одну уникальную цифру. Затем для каждой подстроки произнесите количество цифр, затем произнесите цифру. Наконец, объедините каждую указанную цифру.
Например, высказывание и преобразование для цифровой строки "3322251" (*во вложении)
Дается положительное целое число n, верните n-й член последовательности "посчитай и скажи".
Пример:
Ввод: n = 1
Вывод: "1"
Решение задачи
Сложность: Средняя
Условие задачи: последовательность "Посчитай и скажи" - это последовательность строк цифр, определяемая рекурсивной формулой:
посчитайте и скажите(1) = "1"
countAndSay(n) - это способ, которым вы бы "сказали" строку цифр из countAndSay(n-1), которая затем преобразуется в другую строку цифр.
Чтобы определить, как вы "произносите" строку цифр, разделите ее на минимальное количество подстрок таким образом, чтобы каждая подстрока содержала ровно одну уникальную цифру. Затем для каждой подстроки произнесите количество цифр, затем произнесите цифру. Наконец, объедините каждую указанную цифру.
Например, высказывание и преобразование для цифровой строки "3322251" (*во вложении)
Дается положительное целое число n, верните n-й член последовательности "посчитай и скажи".
Пример:
Ввод: n = 1
Вывод: "1"
Решение задачи
👍3
Наибольший общий делитель строки
Сложность: Лёгкая
Условие задачи: для двух строк s и t мы говорим "t делит s" тогда и только тогда, когда s = t + ... + t (т.е. t объединяется с самим собой один или несколько раз).
Дается две строки str1 и str2, верните самую большую строку x, такую, что x делит как str1, так и str2.
Пример:
Ввод: str1 = "ABCABC", str2 = "ABC"
Вывод: "ABC"
Ввод: str1 = "ABABAB", str2 = "ABAB"
Вывод: "AB"
Решение задачи
Сложность: Лёгкая
Условие задачи: для двух строк s и t мы говорим "t делит s" тогда и только тогда, когда s = t + ... + t (т.е. t объединяется с самим собой один или несколько раз).
Дается две строки str1 и str2, верните самую большую строку x, такую, что x делит как str1, так и str2.
Пример:
Ввод: str1 = "ABCABC", str2 = "ABC"
Вывод: "ABC"
Ввод: str1 = "ABABAB", str2 = "ABAB"
Вывод: "AB"
Решение задачи
👍8
Пацифисты
Сложность: Средняя
Условие задачи: вы менеджер баскетбольной команды. Для предстоящего турнира вы хотите выбрать команду с наибольшим общим счетом. Счет команды - это сумма очков всех игроков в команде.
Однако баскетбольной команде не разрешается иметь конфликтов. Конфликт возникает, если у младшего игрока строго более высокий балл, чем у старшего игрока. Конфликт не возникает между игроками одного возраста.
Учитывая два списка, баллы и возрасты, где каждый балл [i] и возраст [i] представляют счет и возраст i-го игрока соответственно, возвращают наивысший общий балл всех возможных баскетбольных команд.
Пример:
Ввод: scores = [1,3,5,10,15], ages = [1,2,3,4,5]
Вывод: 34
Ввод: scores = [4,5,6,5], ages = [2,1,2,1]
Вывод: 16
Решение задачи
Сложность: Средняя
Условие задачи: вы менеджер баскетбольной команды. Для предстоящего турнира вы хотите выбрать команду с наибольшим общим счетом. Счет команды - это сумма очков всех игроков в команде.
Однако баскетбольной команде не разрешается иметь конфликтов. Конфликт возникает, если у младшего игрока строго более высокий балл, чем у старшего игрока. Конфликт не возникает между игроками одного возраста.
Учитывая два списка, баллы и возрасты, где каждый балл [i] и возраст [i] представляют счет и возраст i-го игрока соответственно, возвращают наивысший общий балл всех возможных баскетбольных команд.
Пример:
Ввод: scores = [1,3,5,10,15], ages = [1,2,3,4,5]
Вывод: 34
Ввод: scores = [4,5,6,5], ages = [2,1,2,1]
Вывод: 16
Решение задачи
👍2
Площадь прямоугольников
Сложность: Средняя
Условие задачи: на вход подаются координаты двух прямоугольников (левый нижний угол, а также правый верхний угол).
Необходимо вычислить суммарную площадь, занимаемую двумя прямоугольниками.
Пример:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: на вход подаются координаты двух прямоугольников (левый нижний угол, а также правый верхний угол).
Необходимо вычислить суммарную площадь, занимаемую двумя прямоугольниками.
Пример:
Ввод:
ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2Вывод:
45Решение задачи
👍2
Чужой язык
Сложность: Лёгкая
Условие задачи: на чужом языке они также используют английские строчные буквы, но, возможно, в другом порядке. Порядок алфавита - это некоторая перестановка строчных букв.
Учитывая последовательность слов, написанных на чужом языке, и порядок алфавита, верните значение true тогда и только тогда, когда данные слова отсортированы лексикографически на этом чужом языке.
Пример:
Ввод: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
Вывод: true
Объяснение:
Ввод: words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
Вывод: false
Решение задачи
Сложность: Лёгкая
Условие задачи: на чужом языке они также используют английские строчные буквы, но, возможно, в другом порядке. Порядок алфавита - это некоторая перестановка строчных букв.
Учитывая последовательность слов, написанных на чужом языке, и порядок алфавита, верните значение true тогда и только тогда, когда данные слова отсортированы лексикографически на этом чужом языке.
Пример:
Ввод: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
Вывод: true
Объяснение:
Ввод: words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
Вывод: false
Решение задачи
👍4❤1
Нахождение индекс первого вхождения в строку
Сложность: Средняя
Условие задачи: дается две строки needle и haystack, верните индекс первого появления иглы в стоге сена или -1, если игла не является частью стога сена.
Пример:
Ввод: haystack = "sadbutsad", needle = "sad"
Вывод: 0
Ввод: haystack = "leetcode", needle = "leeto"
Вывод: -1
Решение задачи
Сложность: Средняя
Условие задачи: дается две строки needle и haystack, верните индекс первого появления иглы в стоге сена или -1, если игла не является частью стога сена.
Пример:
Ввод: haystack = "sadbutsad", needle = "sad"
Вывод: 0
Ввод: haystack = "leetcode", needle = "leeto"
Вывод: -1
Решение задачи
👍1
Треугольник наибольшей площади
Сложность: Лёгкая
Условие задачи: дается массив точек на плоскости X-Y, где точки [i] = [xi, yi], верните площадь самого большого треугольника, который может быть образован любыми тремя различными точками. Будут приняты ответы в пределах 10-5 от фактического ответа.
Пример:
Ввод: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
Вывод: 2.00000
Объяснение:
Ввод: points = [[1,0],[0,0],[0,1]]
Вывод: 0.50000
Решение задачи
Сложность: Лёгкая
Условие задачи: дается массив точек на плоскости X-Y, где точки [i] = [xi, yi], верните площадь самого большого треугольника, который может быть образован любыми тремя различными точками. Будут приняты ответы в пределах 10-5 от фактического ответа.
Пример:
Ввод: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
Вывод: 2.00000
Объяснение:
Ввод: points = [[1,0],[0,0],[0,1]]
Вывод: 0.50000
Решение задачи
👍3
Наиболее частое слово
Сложность: Лёгкая
Условие задачи: дается строковый абзац и строковый массив запрещенных слов banned возвращают наиболее часто встречающееся слово, которое не запрещено. Гарантируется, что есть хотя бы одно слово, которое не запрещено, и что ответ уникален.
Слова в абзаце не учитывают регистр, и ответ должен быть возвращен в нижнем регистре.
Пример:
Ввод: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"]
Вывод: "ball"
Ввод: paragraph = "a.", banned = []
Вывод: "a"
Решение задачи
Сложность: Лёгкая
Условие задачи: дается строковый абзац и строковый массив запрещенных слов banned возвращают наиболее часто встречающееся слово, которое не запрещено. Гарантируется, что есть хотя бы одно слово, которое не запрещено, и что ответ уникален.
Слова в абзаце не учитывают регистр, и ответ должен быть возвращен в нижнем регистре.
Пример:
Ввод: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"]
Вывод: "ball"
Ввод: paragraph = "a.", banned = []
Вывод: "a"
Решение задачи
👍7
Pow(x, n)
Сложность задачи: Средняя
Условие задачи:
Реализуйте функцию pow(x, n), которая вычисляет x в степени n (т. е. x^n).
Пример:
Ввод: x = 2.00000, n = 10
Вывод:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= x^n <= 104
Решение задачи
Сложность задачи: Средняя
Условие задачи:
Реализуйте функцию pow(x, n), которая вычисляет x в степени n (т. е. x^n).
Пример:
Ввод: x = 2.00000, n = 10
Вывод:
1024.00000
Ввод: x = 2.10000, n = 3
Вывод: 9.26100
Диапазон данных:-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= x^n <= 104
Решение задачи
👍4👎2
То же дерево
Сложность задачи:
Низкая
Условие:
Получив корни двух бинарных деревьев p и q, напишите функцию, проверяющую, совпадают ли они.
Два бинарных дерева считаются одинаковыми, если они структурно идентичны, а узлы имеют одинаковое значение.
Примеры (картинки по порядку):
Ввод: p = [1,2,3], q = [1,2,3]
Вывод: true
Ввод: p = [1,2], q = [1,null,2]
Вывод: false
Ввод: p = [1,2,1], q = [1,1,2]
Вывод: false
Ограничения:
Количество узлов в обоих деревьях находится в диапазоне [0, 100].
Решение задачи
Сложность задачи:
Низкая
Условие:
Получив корни двух бинарных деревьев p и q, напишите функцию, проверяющую, совпадают ли они.
Два бинарных дерева считаются одинаковыми, если они структурно идентичны, а узлы имеют одинаковое значение.
Примеры (картинки по порядку):
Ввод: p = [1,2,3], q = [1,2,3]
Вывод: true
Ввод: p = [1,2], q = [1,null,2]
Вывод: false
Ввод: p = [1,2,1], q = [1,1,2]
Вывод: false
Ограничения:
Количество узлов в обоих деревьях находится в диапазоне [0, 100].
Решение задачи
👍2
Балансировка бинарного дерева
Сложность: Лёгкая
Условие задачи: дается бинарное дерево, определите является ли дерево сбалансированным.
Для данной проблемы сбалансированным по высоте деревом является бинарное дерево, у которого для каждого родителя есть оба потомка, если потомки вообще имеются.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево, определите является ли дерево сбалансированным.
Для данной проблемы сбалансированным по высоте деревом является бинарное дерево, у которого для каждого родителя есть оба потомка, если потомки вообще имеются.
Пример:
Ввод:
root = [3,9,20,null,null,15,7]Вывод:
trueВвод:
root = [1,2,2,3,3,null,null,4,4]Вывод:
trueРешение задачи
👍3👎1
Инвертировать бинарное дерево
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, инвертируйте дерево и верните его корень.
Пример:
Ввод:
Вывод:
Объяснение: *во вложении
Решение задачи
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, инвертируйте дерево и верните его корень.
Пример:
Ввод:
root = [4,2,7,1,3,6,9]Вывод:
[4,7,2,9,6,3,1]Объяснение: *во вложении
Решение задачи
👍9
Позиция для вставки
Сложность: Лёгкая
Условие задачи: дается отсортированный массив различных целых чисел и целевое значение, верните индекс, если целевое значение найдено. Если нет, верните индекс туда, где он был бы, если бы он был вставлен по порядку.
Вы должны написать алгоритм с O(log n) сложностью во время выполнения.
Пример:
Ввод: nums = [1,3,5,6], target = 5
Вывод: 2
Ввод:nums = [1,3,5,6], target = 2
Вывод: 1
Решение задачи
Сложность: Лёгкая
Условие задачи: дается отсортированный массив различных целых чисел и целевое значение, верните индекс, если целевое значение найдено. Если нет, верните индекс туда, где он был бы, если бы он был вставлен по порядку.
Вы должны написать алгоритм с O(log n) сложностью во время выполнения.
Пример:
Ввод: nums = [1,3,5,6], target = 5
Вывод: 2
Ввод:nums = [1,3,5,6], target = 2
Вывод: 1
Решение задачи
👍6
Возможность Отправки Посылок В Течение D Дней
Сложность: Средняя
Условие задачи: на конвейерной ленте есть посылки, которые должны быть отправлены из одного порта в другой в течение нескольких дней.
i-я упаковка на конвейерной ленте имеет вес гирь[i]. Каждый день мы загружаем судно упаковками на конвейерную ленту (в порядке, указанном по весу). Мы не можем загружать больше груза, чем максимальная грузоподъемность судна.
Возвращайте наименьшую грузоподъемность судна, что приведет к отправке всех упаковок на конвейерной ленте в течение нескольких дней.
Пример:
Ввод: weights = [1,2,3,4,5,6,7,8,9,10], days = 5
Вывод: 15
Ввод:weights = [3,2,2,4,1,4], days = 3
Вывод: 6
Решение задачи
Сложность: Средняя
Условие задачи: на конвейерной ленте есть посылки, которые должны быть отправлены из одного порта в другой в течение нескольких дней.
i-я упаковка на конвейерной ленте имеет вес гирь[i]. Каждый день мы загружаем судно упаковками на конвейерную ленту (в порядке, указанном по весу). Мы не можем загружать больше груза, чем максимальная грузоподъемность судна.
Возвращайте наименьшую грузоподъемность судна, что приведет к отправке всех упаковок на конвейерной ленте в течение нескольких дней.
Пример:
Ввод: weights = [1,2,3,4,5,6,7,8,9,10], days = 5
Вывод: 15
Ввод:weights = [3,2,2,4,1,4], days = 3
Вывод: 6
Решение задачи
👍4❤1🔥1
Поиск мажоритарного элемента
Условие задачи:
Дан массив nums размера n. Требуется вернуть мажоритарный элемент.
Мажоритарный элемент - это элемент, который появляется более n / 2 раз. Вы можете быть уверены, что мажоритарный элемент всегда существует в массиве.
Примеры:
Ввод: nums = [4,2,4]
Вывод: 4
Ввод: nums = [8, 8, 6, 6, 6, 8, 8]
Вывод: 8
Решение задачи
Условие задачи:
Дан массив nums размера n. Требуется вернуть мажоритарный элемент.
Мажоритарный элемент - это элемент, который появляется более n / 2 раз. Вы можете быть уверены, что мажоритарный элемент всегда существует в массиве.
Примеры:
Ввод: nums = [4,2,4]
Вывод: 4
Ввод: nums = [8, 8, 6, 6, 6, 8, 8]
Вывод: 8
Решение задачи
👍2