Прямой обход дерева
Сложность: Лёгкая
Условие задачи: дано дерево, необходимо преобразовать дерево прямого прохода (корень -> левый потомок -> правый потомок).
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: дано дерево, необходимо преобразовать дерево прямого прохода (корень -> левый потомок -> правый потомок).
Пример:
Ввод:
root = [1,null,3,2,4,null,5,6]
Вывод: [1,3,5,6,2,4]
Ввод: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Вывод: [1,2,3,6,7,11,14,4,8,12,5,9,13,10]
Решение задачи👍2
Грабители 2
Сложность: Средняя
Условие задачи: дан массив денег, находящихся в каждом из домов. Все дома, находящиеся в массиве, расположены кольцом, первый является соседом с последним.
Нашей задачей является ограбить на как можно более внушительную сумму, но есть одно но: нельзя красть в соседних домах, иначе произойдет включение сигнализации.
Результатом вычислений должно являться число, показывающее максимальную выгоду от кражи.
Пример:
Ввод: nums = [2,3,2]
Вывод: 3
Объяснение: нельзя грабить первый и третий дома, так как они соседние.
Ввод: nums = [1,2,3,1]
Вывод: 4
Решение задачи
Сложность: Средняя
Условие задачи: дан массив денег, находящихся в каждом из домов. Все дома, находящиеся в массиве, расположены кольцом, первый является соседом с последним.
Нашей задачей является ограбить на как можно более внушительную сумму, но есть одно но: нельзя красть в соседних домах, иначе произойдет включение сигнализации.
Результатом вычислений должно являться число, показывающее максимальную выгоду от кражи.
Пример:
Ввод: nums = [2,3,2]
Вывод: 3
Объяснение: нельзя грабить первый и третий дома, так как они соседние.
Ввод: nums = [1,2,3,1]
Вывод: 4
Решение задачи
👍4🔥2
Является ли строка палиндромом
Сложность: Лёгкая
Условие: палиндромом является фраза, которая после перевода в нижний регистр всех символов, а также удаления всех знаков препинания, читается одинаково как слева направо, так и справа налево.
Задача - вернуть true, если строка палиндром, false - в противном случае.
Пример:
Ввод:
Ввод:
Ввод:
Решение задачи
Сложность: Лёгкая
Условие: палиндромом является фраза, которая после перевода в нижний регистр всех символов, а также удаления всех знаков препинания, читается одинаково как слева направо, так и справа налево.
Задача - вернуть true, если строка палиндром, false - в противном случае.
Пример:
Ввод:
s = "A man, a plan, a canal: Panama"
Вывод: true
Объяснение: "amanaplanacanalpanama" является палиндромом.Ввод:
s = "race a car"
Вывод: false
Объяснение: "raceacar" не является палиндромом.Ввод:
s = " "
Вывод: true
Объяснение: s - пустая строка "" после удаления всех знаков препинания и пробелов.
Так как пустая строка читается одинаково в обоих направлениях, то она является палиндромом.Решение задачи
👍8
Топ k наиболее часто встречающихся элементов
Сложность: Средняя
Условие задачи: дан целочисленный массив и целое число k. Необходимо вернуть k часто встречающихся элементов. Порядок чисел в ответе не имеет значения.
Гарантируется, что ответ уникальный. То есть несколько элементов не могут встречаться одинаковое количество раз.
Пример:
Ввод:
Ввод:
Решение задачи
Сложность: Средняя
Условие задачи: дан целочисленный массив и целое число k. Необходимо вернуть k часто встречающихся элементов. Порядок чисел в ответе не имеет значения.
Гарантируется, что ответ уникальный. То есть несколько элементов не могут встречаться одинаковое количество раз.
Пример:
Ввод:
nums = [1,1,1,2,2,3], k = 2
Вывод: [1,2]Ввод:
nums = [1], k = 1
Вывод: [1]Решение задачи
👍2
Поедание бананов
Сложность: Средняя
Условие задачи: обезьяна Коко любит есть бананы. Есть n связок бананов, где i-ая связка содержит piles[i] бананов. Смотритель зоопарка же ушел и вернется через h часов.
Коко может поедать бананы с произвольной скоростью k бананов в час. Если в связке менее k бананов, она поедает всю связку и более в этот час не ест.
Коко кушает медленно, но уверенно: обезьяна нацелена на съедение всех бананов до возвращения смотрителя.
Необходимо вычислить минимальное число k, такое что все бананы будут съедены за h часов.
Пример:
Ввод: piles = [3,6,7,11], h = 8
Вывод: 4
Ввод: piles = [30,11,23,4,20], h = 5
Вывод: 30
Решение задачи
Сложность: Средняя
Условие задачи: обезьяна Коко любит есть бананы. Есть n связок бананов, где i-ая связка содержит piles[i] бананов. Смотритель зоопарка же ушел и вернется через h часов.
Коко может поедать бананы с произвольной скоростью k бананов в час. Если в связке менее k бананов, она поедает всю связку и более в этот час не ест.
Коко кушает медленно, но уверенно: обезьяна нацелена на съедение всех бананов до возвращения смотрителя.
Необходимо вычислить минимальное число k, такое что все бананы будут съедены за h часов.
Пример:
Ввод: piles = [3,6,7,11], h = 8
Вывод: 4
Ввод: piles = [30,11,23,4,20], h = 5
Вывод: 30
Решение задачи
👍6
Уникальные бинарные деревья поиска
Сложность: Средняя
Условие задачи: дано целое число n, необходимо посчитать количество бинарных деревьев с уникальной структурой, где n - количество узлов в дереве (от 1 до n).
Пример:
Ввод: n = 3
Вывод: 5
Объяснение:
Ввод: n = 1
Вывод: 1
Решение задачи
Сложность: Средняя
Условие задачи: дано целое число n, необходимо посчитать количество бинарных деревьев с уникальной структурой, где n - количество узлов в дереве (от 1 до n).
Пример:
Ввод: n = 3
Вывод: 5
Объяснение:
Ввод: n = 1
Вывод: 1
Решение задачи
👍3
Поиск в сдвинутом сортированном массиве
Сложность: Средняя
Условие задачи: дан массив, сдвинутый относительно опорного элемента, который неизвестен ( массив после сдвига относительно опорного элемента имеет следующий вид:
Массив
Необходимо осуществить поиск целевого элемента в сдвинутом массиве, определив его индекс, или же вывести
Решение должно быть за
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дан массив, сдвинутый относительно опорного элемента, который неизвестен ( массив после сдвига относительно опорного элемента имеет следующий вид:
[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]])Массив
[0,1,2,4,5,6,7], имея опорный элемент 3, будет выглядеть следующим образом: [4,5,6,7,0,1,2]. Необходимо осуществить поиск целевого элемента в сдвинутом массиве, определив его индекс, или же вывести
-1 при его отсутствии. Решение должно быть за
O(log n) по времени. Пример:
Ввод:
nums = [4,5,6,7,0,1,2], target = 0Вывод:
4Ввод:
nums = [4,5,6,7,0,1,2], target = 3Вывод:
-1Решение задачи
👍3
Палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, одинаково читающаяся в обоих направлениях.
Пример:
Ввод:
Объяснение:
Ввод:
Объяснение:
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, одинаково читающаяся в обоих направлениях.
Пример:
Ввод:
words = ["lc","cl","gg"]
Вывод: 6Объяснение:
lc" + "gg" + "cl" = "lcggcl" или же "clgglc", но оба имеют максимальную длину 6. Ввод:
words = ["ab","ty","yt","lc","cl","ab"]
Вывод: 8 Объяснение:
"ty" + "lc" + "cl" + "yt" = "tylcclyt" или "lcyttycl"
Ввод: words = ["cc","ll","xx"]
Вывод: 2
Решение задачи👍2❤1
Вращение изображения
Сложность: Средняя
Условие задачи: дан двумерный массив, представляющий из себя изоражение, необходимо провращать данное изображение на 90 градусов по часов.
Решение должно фактически изменять исходный массив, не создавая новой матрицы.
Пример:
Ввод:
Сложность: Средняя
Условие задачи: дан двумерный массив, представляющий из себя изоражение, необходимо провращать данное изображение на 90 градусов по часов.
Решение должно фактически изменять исходный массив, не создавая новой матрицы.
Пример:
Ввод:
matrix = [[1,2,3],[4,5,6],[7,8,9]]
Вывод: [[7,4,1],[8,5,2],[9,6,3]]
Ввод: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
Вывод: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
Решение задачи👍6
Грабители 2
Сложность: Средняя
Условие задачи: дан массив денег, находящихся в каждом из домов. Все дома, находящиеся в массиве, расположены кольцом, первый является соседом с последним.
Нашей задачей является ограбить на как можно более внушительную сумму, но есть одно но: нельзя красть в соседних домах, иначе произойдет включение сигнализации.
Результатом вычислений должно являться число, показывающее максимальную выгоду от кражи.
Пример:
Ввод: nums = [2,3,2]
Вывод: 3
Объяснение: нельзя грабить первый и третий дома, так как они соседние.
Ввод: nums = [1,2,3,1]
Вывод: 4
Решение задачи
Сложность: Средняя
Условие задачи: дан массив денег, находящихся в каждом из домов. Все дома, находящиеся в массиве, расположены кольцом, первый является соседом с последним.
Нашей задачей является ограбить на как можно более внушительную сумму, но есть одно но: нельзя красть в соседних домах, иначе произойдет включение сигнализации.
Результатом вычислений должно являться число, показывающее максимальную выгоду от кражи.
Пример:
Ввод: nums = [2,3,2]
Вывод: 3
Объяснение: нельзя грабить первый и третий дома, так как они соседние.
Ввод: nums = [1,2,3,1]
Вывод: 4
Решение задачи
👍4
Мост наименьшей длины
Сложность: Средняя
Условие задачи: на вход подается матрица, в которой 1 - суша, 0 - вода.
Остров представляет из себя совокупность частей суши, соединенных в четырех направлениях. На решетке существуют только два острова.
Можно изменить 0 на 1 для соединения двух островов в один.
Необходимо посчитать количество смен нулей на единицу для соединения двух островов.
Пример:
Ввод: grid = [[0,1],[1,0]]
Вывод: 1
Объяснение:
Ввод: grid = [[0,1,0],[0,0,0],[0,0,1]]
Вывод: 2
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается матрица, в которой 1 - суша, 0 - вода.
Остров представляет из себя совокупность частей суши, соединенных в четырех направлениях. На решетке существуют только два острова.
Можно изменить 0 на 1 для соединения двух островов в один.
Необходимо посчитать количество смен нулей на единицу для соединения двух островов.
Пример:
Ввод: grid = [[0,1],[1,0]]
Вывод: 1
Объяснение:
Ввод: grid = [[0,1,0],[0,0,0],[0,0,1]]
Вывод: 2
Решение задачи
👍4
Поиск длины строки с наибольшим количеством одинаковых символов
Сложность: Средняя
Условие задачи: дана строка s и число k. Предлагается выбрать в строке любой символ и заменить его на наиболее повторяющийся. Таких замен можно делать не более, чем k-раз.
Трубуется найти максимальную длину строки с одинаковым символом. Символом может быть любая из букв латинского алфавита, находящаяся в верхнем регистре.
Пример:
Ввод:
Объяснение:
Ввод:
Вывод: 4
Решение задачи
Сложность: Средняя
Условие задачи: дана строка s и число k. Предлагается выбрать в строке любой символ и заменить его на наиболее повторяющийся. Таких замен можно делать не более, чем k-раз.
Трубуется найти максимальную длину строки с одинаковым символом. Символом может быть любая из букв латинского алфавита, находящаяся в верхнем регистре.
Пример:
Ввод:
s = "ABAB", k = 2
Вывод: 4
Объяснение:
заменить можно две 'A' на два символа 'B'. Или же наоборот. Ввод:
s = "AABABBA", k = 1Вывод: 4
Решение задачи
👍3
Палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, одинаково читающаяся в обоих направлениях.
Пример:
Ввод:
Объяснение:
Ввод:
Объяснение:
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, одинаково читающаяся в обоих направлениях.
Пример:
Ввод:
words = ["lc","cl","gg"]
Вывод: 6Объяснение:
lc" + "gg" + "cl" = "lcggcl" или же "clgglc", но оба имеют максимальную длину 6. Ввод:
words = ["ab","ty","yt","lc","cl","ab"]
Вывод: 8 Объяснение:
"ty" + "lc" + "cl" + "yt" = "tylcclyt" или "lcyttycl"
Ввод: words = ["cc","ll","xx"]
Вывод: 2
Решение задачи👍3
Прибавка единицы
Сложность: Лёгкая
Условие задачи: на вход подаётся массив из цифр, где на i-ой позиции в массиве находится i-ая цифра в числе.
Необходимо добавить к данному числу единицу и вывести получившийся результат аналогично по цифрам.
Пример:
Ввод: digits = [‘1’, ‘2’, ‘3’]
Вывод: [‘1’, ‘2’, ‘4’]
Решение задачи
Сложность: Лёгкая
Условие задачи: на вход подаётся массив из цифр, где на i-ой позиции в массиве находится i-ая цифра в числе.
Необходимо добавить к данному числу единицу и вывести получившийся результат аналогично по цифрам.
Пример:
Ввод: digits = [‘1’, ‘2’, ‘3’]
Вывод: [‘1’, ‘2’, ‘4’]
Решение задачи
👍5
Степень двойки
Сложность: Лёгкая
Условие задачи: даётся целое число n, необходимо проверить, является ли число степенью двойки или же нет.
Пример:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: даётся целое число n, необходимо проверить, является ли число степенью двойки или же нет.
Пример:
Ввод:
n = 1Вывод:
trueРешение задачи
👍5❤1
Нахождение всех анаграмм в строке
Сложность: Средняя
Условие задачи: даны две строки s и p, надо вернуть все индексы стартовых позиций, с которых начинаются анаграммы внутри строки s.
Анаграмма - строка, составленная путём перестановок букв из какого либо базового набора.
Пример:
Ввод:
Подстрока
Сложность: Средняя
Условие задачи: даны две строки s и p, надо вернуть все индексы стартовых позиций, с которых начинаются анаграммы внутри строки s.
Анаграмма - строка, составленная путём перестановок букв из какого либо базового набора.
Пример:
Ввод:
s = "cbaebabacd", p = "abc"
Вывод: [0,6]
Объяснение:Подстрока
"cba" начинается с индекса 0, она является анаграммой строки "abc".
Подстрока "bac" начинается с индекса 6, она является анаграммой строки "abc".
Ввод: s = "abab", p = "ab"
Вывод: [0,1,2]
Решение задачиНаиближайший общий предок
Сложность: Средняя
Условие задачи: дано бинарное дерево поиска, надо найти ближайшего родителя для обоих потомков.
Наиближайший общий родитель определяется между двумя узлами p и q как наименьший узел в дереве, который имеет как p, так и q в качестве потомков (где мы разрешаем узлу быть потомком самого себя).
Пример:
Ввод:
Вывод:
Объяснение: *на картинке
Решение задачи
Сложность: Средняя
Условие задачи: дано бинарное дерево поиска, надо найти ближайшего родителя для обоих потомков.
Наиближайший общий родитель определяется между двумя узлами p и q как наименьший узел в дереве, который имеет как p, так и q в качестве потомков (где мы разрешаем узлу быть потомком самого себя).
Пример:
Ввод:
[6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8Вывод:
6Объяснение: *на картинке
Решение задачи
👍3
Максимальный подмассив
Сложность: Средняя
Условие задачи: дан целочисленный массив, необходимо найти в нем такой подмассив, сумма элементов в котором будет максимальной.
Подмассивом называется последовательная часть исходного массива.
Пример:
Ввод:
Вывод: 6
Объяснение:
Ввод:
Вывод: 23
Решение задачи
Сложность: Средняя
Условие задачи: дан целочисленный массив, необходимо найти в нем такой подмассив, сумма элементов в котором будет максимальной.
Подмассивом называется последовательная часть исходного массива.
Пример:
Ввод:
nums = [-2,1,-3,4,-1,2,1,-5,4]Вывод: 6
Объяснение:
4,-1,2,1] имеет наибольшую сумму 6.Ввод:
nums = [5,4,-1,7,8]Вывод: 23
Решение задачи
👍4
Переспелые апельсины
Сложность: Средняя
Условие задачи: дана двумерная решетка размера
0 - пустая ячейка,
1 - созревший апельсин,
2 - переспевший апельсин.
Каждую минуту апельсины, находящие рядом (сверху, слева, снизу, вправа) с переспевшими - становятся переспевшими.
Необходимо подсчитать количество минут, за которое все апельсины превратятся из свежих в переспевшие. Если это невозможно, то в ответе должна получаться
Пример:
Ввод:
Ввод:
Решение задачи
Сложность: Средняя
Условие задачи: дана двумерная решетка размера
m x n, в каждой из ячеек может находится одно из следующих значений:0 - пустая ячейка,
1 - созревший апельсин,
2 - переспевший апельсин.
Каждую минуту апельсины, находящие рядом (сверху, слева, снизу, вправа) с переспевшими - становятся переспевшими.
Необходимо подсчитать количество минут, за которое все апельсины превратятся из свежих в переспевшие. Если это невозможно, то в ответе должна получаться
-1. Пример:
Ввод:
[[2,1,1],[1,1,0],[0,1,1]]
Вывод: 4Ввод:
grid = [[2,1,1],[0,1,1],[1,0,1]]
Вывод: -1
Объяснение: переспевший фрукт не контактирует со спелыми плодами. Решение задачи
👍1
Слияние двух отсортированных массивов
Сложность: Лёгкая
Условие задачи: даны два массива, отсортированные в порядке неубывания, а также две переменные m и n, в которых хранится длина каждого из массивов.
Надо свзать оба массива в один в порядке неубывания.
Результирующий массив должен содержаться в массиве
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: даны два массива, отсортированные в порядке неубывания, а также две переменные m и n, в которых хранится длина каждого из массивов.
Надо свзать оба массива в один в порядке неубывания.
Результирующий массив должен содержаться в массиве
nums1. Пример:
Ввод:
nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Вывод: [1,2,2,3,5,6]
Ввод: nums1 = [1], m = 1, nums2 = [], n = 0
Вывод: [1]
Решение задачи👍3