То же дерево
Сложность задачи:
Низкая
Условие:
Получив корни двух бинарных деревьев 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].
Решение задачи
👍3
Балансировка бинарного дерева
Сложность: Лёгкая
Условие задачи: дается бинарное дерево, определите является ли дерево сбалансированным.
Для данной проблемы сбалансированным по высоте деревом является бинарное дерево, у которого для каждого родителя есть оба потомка, если потомки вообще имеются.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево, определите является ли дерево сбалансированным.
Для данной проблемы сбалансированным по высоте деревом является бинарное дерево, у которого для каждого родителя есть оба потомка, если потомки вообще имеются.
Пример:
Ввод:
root = [3,9,20,null,null,15,7]Вывод:
trueВвод:
root = [1,2,2,3,3,null,null,4,4]Вывод:
trueРешение задачи
👍2
Инвертировать бинарное дерево
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, инвертируйте дерево и верните его корень.
Пример:
Ввод:
Вывод:
Объяснение: *во вложении
Решение задачи
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, инвертируйте дерево и верните его корень.
Пример:
Ввод:
root = [4,2,7,1,3,6,9]Вывод:
[4,7,2,9,6,3,1]Объяснение: *во вложении
Решение задачи
👍4
Поиск мажоритарного элемента
Условие задачи:
Дан массив 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
Решение задачи
Минимизация отклонения
Сложность: Тяжёлая
Условие задачи: дается массив nums из n натуральных чисел.
Вы можете выполнять два типа операций над любым элементом массива любое количество раз:
Если элемент четный, разделите его на 2.
Например, если массив равен [1,2,3,4], то вы можете выполнить эту операцию над последним элементом, и массив будет [1,2,3,2].
Если элемент нечетный, умножьте его на 2.
Например, если массив равен [1,2,3,4], то вы можете выполнить эту операцию над первым элементом, и массив будет равен [2,2,3,4].
Отклонение массива - это максимальная разница между любыми двумя элементами в массиве.
Верните минимальное отклонение, которое может иметь массив после выполнения некоторого количества операций.
Пример:
Ввод: nums = [1,2,3,4]
Вывод: 1
Ввод: nums = [4,1,5,20,3]
Вывод: 3
Решение задачи
Сложность: Тяжёлая
Условие задачи: дается массив nums из n натуральных чисел.
Вы можете выполнять два типа операций над любым элементом массива любое количество раз:
Если элемент четный, разделите его на 2.
Например, если массив равен [1,2,3,4], то вы можете выполнить эту операцию над последним элементом, и массив будет [1,2,3,2].
Если элемент нечетный, умножьте его на 2.
Например, если массив равен [1,2,3,4], то вы можете выполнить эту операцию над первым элементом, и массив будет равен [2,2,3,4].
Отклонение массива - это максимальная разница между любыми двумя элементами в массиве.
Верните минимальное отклонение, которое может иметь массив после выполнения некоторого количества операций.
Пример:
Ввод: nums = [1,2,3,4]
Вывод: 1
Ввод: nums = [4,1,5,20,3]
Вывод: 3
Решение задачи
👍3
Создание четырехугольного дерева
Сложность: Средняя
Условие задачи: дана матричная сетка n * n, состоящая только из 0 и 1. Мы хотим представить сетку в виде четырехъядерного дерева.
Возвращает корень квадродерева, представляющего сетку.
Обратите внимание, что вы можете присвоить значению узла значение True или False, когда isLeaf имеет значение False, и оба значения принимаются в ответе.
Квадродерево - это древовидная структура данных, в которой каждый внутренний узел имеет ровно четыре дочерних элемента. Кроме того, каждый узел имеет два атрибута.
Выполните рекурсию для каждого из дочерних элементов с соответствующей подсеткой.
Пример:
Ввод: grid = [[0,1],[1,0]]
Вывод: [[0,1],[1,0],[1,1],[1,1],[1,0]]
Решение задачи
Сложность: Средняя
Условие задачи: дана матричная сетка n * n, состоящая только из 0 и 1. Мы хотим представить сетку в виде четырехъядерного дерева.
Возвращает корень квадродерева, представляющего сетку.
Обратите внимание, что вы можете присвоить значению узла значение True или False, когда isLeaf имеет значение False, и оба значения принимаются в ответе.
Квадродерево - это древовидная структура данных, в которой каждый внутренний узел имеет ровно четыре дочерних элемента. Кроме того, каждый узел имеет два атрибута.
Выполните рекурсию для каждого из дочерних элементов с соответствующей подсеткой.
Пример:
Ввод: grid = [[0,1],[1,0]]
Вывод: [[0,1],[1,0],[1,1],[1,1],[1,0]]
Решение задачи
👍1
Поиск дубликата поддерева
Сложность: Средняя
Условие задачи: дается корень двоичного дерева, верните все повторяющиеся поддеревья.
Для каждого вида повторяющихся поддеревьев вам нужно только вернуть корневой узел любого из них.
Два дерева дублируются, если они имеют одинаковую структуру с одинаковыми значениями узлов.
Пример:
Ввод: root = [1,2,3,4,null,2,4,null,null,4]
Вывод: [[2,4],[4]]
Решение задачи
Сложность: Средняя
Условие задачи: дается корень двоичного дерева, верните все повторяющиеся поддеревья.
Для каждого вида повторяющихся поддеревьев вам нужно только вернуть корневой узел любого из них.
Два дерева дублируются, если они имеют одинаковую структуру с одинаковыми значениями узлов.
Пример:
Ввод: root = [1,2,3,4,null,2,4,null,null,4]
Вывод: [[2,4],[4]]
Решение задачи
👍2
Сортировка массива
Сложность: Средняя
Условие задачи: дается массив целых чисел nums, отсортируйте массив в порядке возрастания и верните его.
Вы должны решить проблему без использования каких-либо встроенных функций в O(nlog(n)) временной сложности и с наименьшей возможной пространственной сложностью.
Пример:
Ввод: nums = [5,2,3,1]
Вывод: [1,2,3,5]
Ввод: nums = [5,1,1,2,0,0]
Вывод: [0,0,1,1,2,5]
Решение задачи
Сложность: Средняя
Условие задачи: дается массив целых чисел nums, отсортируйте массив в порядке возрастания и верните его.
Вы должны решить проблему без использования каких-либо встроенных функций в O(nlog(n)) временной сложности и с наименьшей возможной пространственной сложностью.
Пример:
Ввод: nums = [5,2,3,1]
Вывод: [1,2,3,5]
Ввод: nums = [5,1,1,2,0,0]
Вывод: [0,0,1,1,2,5]
Решение задачи
❤2👍2
Извлечение дубликатов из отсортированного списка II
Сложность: Средняя
Условие задачи: на вход подается указатель на начало связного списка, необходимо удалить все узлы, имеющие дубликаты, то есть в списке должны остаться лишь уникальные значения, которые были в изначальном списке. Необходимо вернуть связный список в отсортированном порядке как и был.
Пример:
Ввод: head = [1,2,3,3,4,4,5]
Вывод: [1,2,5]
Ввод: head = [1,1,1,2,3]
Вывод: [2,3]
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается указатель на начало связного списка, необходимо удалить все узлы, имеющие дубликаты, то есть в списке должны остаться лишь уникальные значения, которые были в изначальном списке. Необходимо вернуть связный список в отсортированном порядке как и был.
Пример:
Ввод: head = [1,2,3,3,4,4,5]
Вывод: [1,2,5]
Ввод: head = [1,1,1,2,3]
Вывод: [2,3]
Решение задачи
Сжатие строки
Сложность: Средняя
Условие задачи: дается массив символов chars, сожмите его, используя следующий алгоритм:
Начинайте с пустой строки s. Для каждой группы последовательных повторяющихся символов в chars:
Если длина группы равна 1, добавьте символ для просмотра.
В противном случае добавьте символ, за которым следует длина группы.
Сжатые строки не должны возвращаться отдельно, а вместо этого должны храниться во входном символьном массиве chars. Обратите внимание, что длина группы, равная 10 или более, будет разделена на несколько символов в chars.
После того, как вы закончите изменять входной массив, верните новую длину массива.
Вы должны написать алгоритм, который использует только постоянное дополнительное пространство.
Пример:
Ввод: chars = ["a","a","b","b","c","c","c"]
Вывод: Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]
Решение задачи
Сложность: Средняя
Условие задачи: дается массив символов chars, сожмите его, используя следующий алгоритм:
Начинайте с пустой строки s. Для каждой группы последовательных повторяющихся символов в chars:
Если длина группы равна 1, добавьте символ для просмотра.
В противном случае добавьте символ, за которым следует длина группы.
Сжатые строки не должны возвращаться отдельно, а вместо этого должны храниться во входном символьном массиве chars. Обратите внимание, что длина группы, равная 10 или более, будет разделена на несколько символов в chars.
После того, как вы закончите изменять входной массив, верните новую длину массива.
Вы должны написать алгоритм, который использует только постоянное дополнительное пространство.
Пример:
Ввод: chars = ["a","a","b","b","c","c","c"]
Вывод: Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]
Решение задачи
❤2
Отсутствующее число
Сложность: Лёгкая
Условие задачи: дан массив arr из натуральных чисел, отсортированных в строго возрастающем порядке, и целое число k.
Возвращает k-е положительное целое число, отсутствующее в этом массиве.
Пример:
Ввод: arr = [2,3,4,7,11], k = 5
Вывод: 9
Ввод: arr = [1,2,3,4], k = 2
Вывод: 6
Решение задачи
Сложность: Лёгкая
Условие задачи: дан массив arr из натуральных чисел, отсортированных в строго возрастающем порядке, и целое число k.
Возвращает k-е положительное целое число, отсутствующее в этом массиве.
Пример:
Ввод: arr = [2,3,4,7,11], k = 5
Вывод: 9
Ввод: arr = [1,2,3,4], k = 2
Вывод: 6
Решение задачи
👍2🎄1
Подмассив с фиксированными границами
Сложность: Тяжёлая
Условие задачи: дается целочисленный массив nums и два целых числа minK и maxK.
Подмассив nums с фиксированной привязкой - это подмассив, который удовлетворяет следующим условиям:
Минимальное значение в подмассиве равно minK.
Максимальное значение в подмассиве равно max.
Возвращает количество подмассивов с фиксированной привязкой.
Подмассив - это непрерывная часть массива.
Пример:
Ввод: nums = [1,3,5,2,7,5], minK = 1, maxK = 5
Вывод: 2
Ввод: nums = [1,1,1,1], minK = 1, maxK = 1
Вывод: 10
Решение задачи
Сложность: Тяжёлая
Условие задачи: дается целочисленный массив nums и два целых числа minK и maxK.
Подмассив nums с фиксированной привязкой - это подмассив, который удовлетворяет следующим условиям:
Минимальное значение в подмассиве равно minK.
Максимальное значение в подмассиве равно max.
Возвращает количество подмассивов с фиксированной привязкой.
Подмассив - это непрерывная часть массива.
Пример:
Ввод: nums = [1,3,5,2,7,5], minK = 1, maxK = 5
Вывод: 2
Ввод: nums = [1,1,1,1], minK = 1, maxK = 1
Вывод: 10
Решение задачи
👍1
Случайный узел списка
Сложность: Средняя
Условие задачи: дается односвязный список, верните значение случайного узла из связанного списка. Каждый узел должен иметь одинаковую вероятность быть выбранным.
Реализуйте класс решения:
Инициализируется объект с помощью заголовка односвязного списка head.
int getRandom() случайным образом выбирает узел из списка и возвращает его значение. Все узлы списка должны быть выбраны с равной вероятностью.
Пример:
Ввод: ["Solution", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"]
[[[1, 2, 3]], [], [], [], [], []]
Вывод: [null, 1, 3, 2, 2, 3]
Решение задачи
Сложность: Средняя
Условие задачи: дается односвязный список, верните значение случайного узла из связанного списка. Каждый узел должен иметь одинаковую вероятность быть выбранным.
Реализуйте класс решения:
Инициализируется объект с помощью заголовка односвязного списка head.
int getRandom() случайным образом выбирает узел из списка и возвращает его значение. Все узлы списка должны быть выбраны с равной вероятностью.
Пример:
Ввод: ["Solution", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"]
[[[1, 2, 3]], [], [], [], [], []]
Вывод: [null, 1, 3, 2, 2, 3]
Решение задачи
Скобочная пунктуация
Сложность: Лёгкая
Условие задачи: дана строка, содержащая в себе только символы:
Пример:
Ввод:
Ввод:
Ввод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дана строка, содержащая в себе только символы:
'(', ')', '{', '}', '[', ']'. Надо выполнить проверку на то, корректно ли открыты и закрыты все скобки. Пример:
Ввод:
s = "()"
Вывод: TrueВвод:
s = "()[]{}"
Вывод: TrueВвод:
s = "(]"
Вывод: FalseРешение задачи
👍1
От предка до потомка
Сложность: Средняя
Условие задачи: дается корень двоичного дерева, содержащего только цифры от 0 до 9.
Каждый путь от корня к листу в дереве представляет собой число.
Например, путь от корня к листу 1 -> 2 -> 3 представляет число 123.
Возвращает общую сумму всех чисел от корня до конца. Тестовые примеры генерируются таким образом, чтобы ответ помещался в 32-разрядное целое число.
Конечный узел - это узел без дочерних элементов.
Пример:
Ввод: root = [1,2,3]
Вывод: 25
Ввод: root = [4,9,0,5,1]
Вывод: 1026
Решение задачи
Сложность: Средняя
Условие задачи: дается корень двоичного дерева, содержащего только цифры от 0 до 9.
Каждый путь от корня к листу в дереве представляет собой число.
Например, путь от корня к листу 1 -> 2 -> 3 представляет число 123.
Возвращает общую сумму всех чисел от корня до конца. Тестовые примеры генерируются таким образом, чтобы ответ помещался в 32-разрядное целое число.
Конечный узел - это узел без дочерних элементов.
Пример:
Ввод: root = [1,2,3]
Вывод: 25
Ввод: root = [4,9,0,5,1]
Вывод: 1026
Решение задачи
👍2
Симметрия в дереве
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, проверьте, является ли оно зеркалом самого себя (т.е. симметричным вокруг своего центра).
Пример:
Ввод: root = [1,2,2,null,3,null,3]
Вывод: false
Решение задачи
Сложность: Лёгкая
Условие задачи: дается корень двоичного дерева, проверьте, является ли оно зеркалом самого себя (т.е. симметричным вокруг своего центра).
Пример:
Ввод: root = [1,2,2,null,3,null,3]
Вывод: false
Решение задачи
👍2
Проверка полноты бинарного дерева
Сложность: Средняя
Условие задачи: дается корень двоичного дерева, определите, является ли это полным двоичным деревом.
В полном двоичном дереве каждый уровень, за исключением, возможно, последнего, полностью заполнен, и все узлы на последнем уровне расположены как можно дальше слева. Он может иметь от 1 до 2h узлов включительно на последнем уровне h.
Пример:
Ввод: root = [1,2,3,4,5,6]
Вывод: true
Ввод: root = [1,2,3,4,5,null,7]
Вывод: false
Решение задачи
Сложность: Средняя
Условие задачи: дается корень двоичного дерева, определите, является ли это полным двоичным деревом.
В полном двоичном дереве каждый уровень, за исключением, возможно, последнего, полностью заполнен, и все узлы на последнем уровне расположены как можно дальше слева. Он может иметь от 1 до 2h узлов включительно на последнем уровне h.
Пример:
Ввод: root = [1,2,3,4,5,6]
Вывод: true
Ввод: root = [1,2,3,4,5,null,7]
Вывод: false
Решение задачи
👍2❤1
Количество изолированных островов
Сложность: Средняя
Условие задачи: дан двумерный массив, содержащий 0 (острова) и 1(воду).
Остров - множество нулей, соединенных в четырех направлениях (справа, снизу, слева, сверху), изолированый остров - множество нулей, окруженных со всех сторон единицами.
Надо посчитать количество изолированных островов.
Пример:
Ввод: grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
Вывод: 2
Объяснение:
Ввод: grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]
Вывод: 1
Решение задачи
Сложность: Средняя
Условие задачи: дан двумерный массив, содержащий 0 (острова) и 1(воду).
Остров - множество нулей, соединенных в четырех направлениях (справа, снизу, слева, сверху), изолированый остров - множество нулей, окруженных со всех сторон единицами.
Надо посчитать количество изолированных островов.
Пример:
Ввод: grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
Вывод: 2
Объяснение:
Ввод: grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]
Вывод: 1
Решение задачи
👍1
Столкновение астероидов
Сложность: Средняя
Условие задачи: дан массив астероидов (каждое значение - вес астероида, а знак - направление движения). Каждый из астероидов двигается с одинаковой скоростью.
При столкновени двух астероидов, асторид с меньшим весов уничтожается (у целого астероида вес остается неизменным после столкновения).
Вывести надо результирующий массив после всевозможных столкновений.
Пример:
Ввод:
Ввод:
Решение задачи
Сложность: Средняя
Условие задачи: дан массив астероидов (каждое значение - вес астероида, а знак - направление движения). Каждый из астероидов двигается с одинаковой скоростью.
При столкновени двух астероидов, асторид с меньшим весов уничтожается (у целого астероида вес остается неизменным после столкновения).
Вывести надо результирующий массив после всевозможных столкновений.
Пример:
Ввод:
asteroids = [5,10,-5]
Вывод: [5,10]
Объяснение: 3-ий астероид сталкивается со 2-ым и уничтожается. Ввод:
asteroids = [8,-8]
Вывод: [ ]Решение задачи
👍1
Заливка
Сложность: Лёгкая
Условие задачи: дается изображение, которое представлено двумерной матрицей, где каждая ячейка означает значение пикселя.
Также даются три числа sr, sc, color. Надо осуществить заливку, начиная с image[sr][sc].
Заливка осуществляется в четырех направлениях от текущей ячейки, при этом изменяются только ячейки, которые имеют идентичное значение пикселя с базовой ячейкой.
Пример:
Ввод: image = [[1,1,1],[1,1,0],[1,0,1]], sr = 1, sc = 1, color = 2
Вывод: [[2,2,2],[2,2,0],[2,0,1]]
Решение задачи
Сложность: Лёгкая
Условие задачи: дается изображение, которое представлено двумерной матрицей, где каждая ячейка означает значение пикселя.
Также даются три числа sr, sc, color. Надо осуществить заливку, начиная с image[sr][sc].
Заливка осуществляется в четырех направлениях от текущей ячейки, при этом изменяются только ячейки, которые имеют идентичное значение пикселя с базовой ячейкой.
Пример:
Ввод: image = [[1,1,1],[1,1,0],[1,0,1]], sr = 1, sc = 1, color = 2
Вывод: [[2,2,2],[2,2,0],[2,0,1]]
Решение задачи
Конвертация отсортированного массива в бинарное дерево поиска
Сложность: Лёгкая
Условие задачи: дан целочисленный массив, упорядоченный по возрастанию. Необходимо конвертировать его в сбалансированное по высоте дерево (бинарное).
Сбалансированное по высоте бинарное дерево - это бинарное дерево, глубина между потомками которого на каждом узле отличается не более чем на единицу.
Пример:
Ввод: nums = [-10,-3,0,5,9]
Вывод: [0,-3,9,-10,null,5]
Объяснение: [0,-10,5,null,-3,null,9] также является ответом
Ввод: nums = [1,3]
Вывод: [3,1]
Объяснение: [1,null,3] также является ответом
Решение задачи
Сложность: Лёгкая
Условие задачи: дан целочисленный массив, упорядоченный по возрастанию. Необходимо конвертировать его в сбалансированное по высоте дерево (бинарное).
Сбалансированное по высоте бинарное дерево - это бинарное дерево, глубина между потомками которого на каждом узле отличается не более чем на единицу.
Пример:
Ввод: nums = [-10,-3,0,5,9]
Вывод: [0,-3,9,-10,null,5]
Объяснение: [0,-10,5,null,-3,null,9] также является ответом
Ввод: nums = [1,3]
Вывод: [3,1]
Объяснение: [1,null,3] также является ответом
Решение задачи
👍1