Монетообменик
Сложность: Средняя
Условие задачи: дается массив, состоящий измонет определенного номинала, а также целевое значение суммы.
Необходимо высчитать наименьшее количество монет, которыми можно получить необходимую сумму или вернуть -1 в случае невозможности.
Количество монет не ограничено.
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дается массив, состоящий измонет определенного номинала, а также целевое значение суммы.
Необходимо высчитать наименьшее количество монет, которыми можно получить необходимую сумму или вернуть -1 в случае невозможности.
Количество монет не ограничено.
Пример:
Ввод:
coins = [1,2,5], amount = 11Вывод:
3Объяснение:
11 = 5 + 5 + 1Ввод:
coins = [2], amount = 3Вывод:
-1Ввод:
coins = [1], amount = 0Вывод:
0Решение задачи
👍2
Записка о выкупе
Сложность: Лёгкая
Условие задачи: дано две строки:
Одна буква из
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дано две строки:
ransomNote и magazine. Требуется осуществить проверку, может ли строка ransomNote быть получена путем использования букв из строки magazine. Одна буква из
magazine может быть исопльзована единажды в ransomNote.Пример:
Ввод:
ransomNote = "a", magazine = "b"Вывод:
falseВвод:
ransomNote = "aa", magazine = "ab"Вывод:
falseВвод:
ransomNote = "aa", magazine = "aab"Вывод:
trueРешение задачи
👍4
Поддерево дерева
Сложность: Лёгкая
Условие задачи: даны корни бинарных деревьев
Пример:
Ввод:
Вывод:
Объяснение: *на картинке к задаче
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: даны корни бинарных деревьев
root и subRoot. Надо осуществить проверку, является ли subRoot поддеревом root с той же самой структурой и значениями в узлах.Пример:
Ввод:
root = [3,4,5,1,2], subRoot = [4,1,2]Вывод:
trueОбъяснение: *на картинке к задаче
Ввод:
root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]Вывод:
falseРешение задачи
👍4
Грабители 2
Сложность: Средняя
Условие задачи: дан массив денег, находящихся в каждом из домов. Все дома, находящиеся в массиве, расположены кольцом, первый является соседом с последним.
Нашей задачей является ограбить на как можно более внушительную сумму, но есть одно но: нельзя красть в соседних домах, иначе произойдет включение сигнализации.
Результатом вычислений должно являться число, показывающее максимальную выгоду от кражи.
Пример:
Ввод: nums = [2,3,2]
Вывод: 3
Объяснение: нельзя грабить первый и третий дома, так как они соседние.
Ввод: nums = [1,2,3,1]
Вывод: 4
Решение задачи
Сложность: Средняя
Условие задачи: дан массив денег, находящихся в каждом из домов. Все дома, находящиеся в массиве, расположены кольцом, первый является соседом с последним.
Нашей задачей является ограбить на как можно более внушительную сумму, но есть одно но: нельзя красть в соседних домах, иначе произойдет включение сигнализации.
Результатом вычислений должно являться число, показывающее максимальную выгоду от кражи.
Пример:
Ввод: nums = [2,3,2]
Вывод: 3
Объяснение: нельзя грабить первый и третий дома, так как они соседние.
Ввод: nums = [1,2,3,1]
Вывод: 4
Решение задачи
👍2
Палиндром наибольшей длины в подстроке
Сложность: Средняя
Условие задачи: дана строка, необходимо найти в ней палиндром наибольшей длины.
Палиндром - строка, которая одинаково читается как справа-налево, так и слева-направо.
Пример:
Ввод: s = "babad"
Вывод: "bab"
Объяснение: "aba" также является ответом
Ввод: s = "cbbd"
Вывод: "bb"
Решение задачи
Сложность: Средняя
Условие задачи: дана строка, необходимо найти в ней палиндром наибольшей длины.
Палиндром - строка, которая одинаково читается как справа-налево, так и слева-направо.
Пример:
Ввод: s = "babad"
Вывод: "bab"
Объяснение: "aba" также является ответом
Ввод: s = "cbbd"
Вывод: "bb"
Решение задачи
👍4
Арифметическая прогрессия в массиве
Сложность: Средняя
Условие задачи: дан массив, который называется массивом арифметической прогрессии в случае, если содержит как минимум три элемента, а разница между соседними элементами одинаковая.
Массивы [1,3,5,7,9], [7,7,7,7], [3,-1,-5,-9] являются таковыми.
Необходимо посчитать сколько подобных подмассивов находится в исходном.
Подмассив - непрерывная последовательность исходного массива.
Пример:
Ввод: nums = [1,2,3,4]
Вывод: 3
Объяснение: [1, 2, 3], [2, 3, 4] и [1,2,3,4] являются арифметическими подмассивами.
Ввод: nums = [1]
Вывод: 0
Решение задачи
Сложность: Средняя
Условие задачи: дан массив, который называется массивом арифметической прогрессии в случае, если содержит как минимум три элемента, а разница между соседними элементами одинаковая.
Массивы [1,3,5,7,9], [7,7,7,7], [3,-1,-5,-9] являются таковыми.
Необходимо посчитать сколько подобных подмассивов находится в исходном.
Подмассив - непрерывная последовательность исходного массива.
Пример:
Ввод: nums = [1,2,3,4]
Вывод: 3
Объяснение: [1, 2, 3], [2, 3, 4] и [1,2,3,4] являются арифметическими подмассивами.
Ввод: nums = [1]
Вывод: 0
Решение задачи
👍1
Расшифровка строки
Сложность: Средняя
Условие задачи: сообщение содержит символы из множества
На воход подается строка , состоящая из чисел, необходимо посчитать сколькими способами можно ее расшифровать.
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: сообщение содержит символы из множества
A-Z и может быть расшифровано следующим образом:'A' -> "1"
'B' -> "2"
...
'Z' -> "26"На воход подается строка , состоящая из чисел, необходимо посчитать сколькими способами можно ее расшифровать.
Пример:
Ввод:
s = "12"Вывод:
2Объяснение:
"12" можно расшифровать двумя путями: как (1 2) = "AB", а также как и (12) = "L".Ввод:
s = "226"Вывод:
3Решение задачи
👍2
Слияние двух бинарных деревьев
Сложность: Лёгкая
Условие задачи: дается два бинарных дерева, надо осуществить их наложение друг на друга и вывести результат в новом дереве.
Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дается два бинарных дерева, надо осуществить их наложение друг на друга и вывести результат в новом дереве.
Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.
Пример:
Ввод:
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]Решение задачи
👍8
Поиск суммы в бинарном дереве поиска
Сложность: Лёгкая
Условие задачи: дано бинарное дерево поиска, а также целевое значение. Необходимо определить, имеется ли в дереве два таких значения, в сумме дающие целевое значение, или же нет.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дано бинарное дерево поиска, а также целевое значение. Необходимо определить, имеется ли в дереве два таких значения, в сумме дающие целевое значение, или же нет.
Пример:
Ввод:
root = [5,3,6,2,4,null,7], k = 9Вывод:
trueВвод:
root = [5,3,6,2,4,null,7], k = 28Вывод:
falseРешение задачи
👍7
Ключи и комнаты
Сложность: Средняя
Условие задачи: есть
При посещении какой-либо комнаты в ней находится определенная связка уникальных ключей, номер ключа означет номер комнаты, для которой он отпирает дверь. Можно использовать сразу все связку ключей.
На вход подается массив комнат, где в i-ячейке дается список ключей, находящихся в текущей комнате. Необходимо определеть, можно ли обойти все комнаты.
Пример:
Ввод:
Вывод:
Объяснение: из 0 комнаты можно попасть в 1, из 1 во 2, из 2 в 3.
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: есть
n комнат проиндексированных с 0, все они закрыты кроме комнаты с номером 0. Необходимо посетить все комнаты, однако этого нельзя сдеать не имея ключа от соответствующей закрытой двери. При посещении какой-либо комнаты в ней находится определенная связка уникальных ключей, номер ключа означет номер комнаты, для которой он отпирает дверь. Можно использовать сразу все связку ключей.
На вход подается массив комнат, где в i-ячейке дается список ключей, находящихся в текущей комнате. Необходимо определеть, можно ли обойти все комнаты.
Пример:
Ввод:
rooms = [[1],[2],[3],[]]Вывод:
trueОбъяснение: из 0 комнаты можно попасть в 1, из 1 во 2, из 2 в 3.
Ввод:
rooms = [[1,3],[3,0,1],[2],[0]]Вывод:
falseРешение задачи
👍4❤1
Поиск в бинарном дереве
Сложность: Лёгкая
Условие задачи: дано бинарное дерево поиска и целевое значения для поиска.
Необходимо найти в дереве такой элемент, равный целевому, а также вывести поддерево данного узла.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дано бинарное дерево поиска и целевое значения для поиска.
Необходимо найти в дереве такой элемент, равный целевому, а также вывести поддерево данного узла.
Пример:
Ввод:
root = [4,2,7,1,3], val = 2Вывод:
[2,1,3]Ввод:
root = [4,2,7,1,3], val = 5Вывод:
[]Решение задачи
👍3
Количество возрастающих подпоследовательностей наибольшей длины
Сложность: Средняя
Условие задачи: дан массив целых чисел, надо посчитать количество возрастающих подпоследовательностей наибольшей длины. Подпоследовательность (ее элементы) должна строго возрастать.
Пример:
Ввод:
Вывод:
Объяснение: есть две возрастающие подпоследовательности одинаковой длины:
Ввод:
Вывод:
Объяснение: в данном массиве есть 5 подпоследовательностей длины 1.
Решение задачи
Сложность: Средняя
Условие задачи: дан массив целых чисел, надо посчитать количество возрастающих подпоследовательностей наибольшей длины. Подпоследовательность (ее элементы) должна строго возрастать.
Пример:
Ввод:
nums = [1,3,5,4,7]Вывод:
2Объяснение: есть две возрастающие подпоследовательности одинаковой длины:
[1, 3, 4, 7] и [1, 3, 5, 7]Ввод:
nums = [2,2,2,2,2]Вывод:
5Объяснение: в данном массиве есть 5 подпоследовательностей длины 1.
Решение задачи
👍5
Диаметр бинарного дерева
Сложность: Лёгкая
Условие задачи: дан корневой элемент бинарного дерева, необходимо расчитать диаметр бинарного дерева.
Диаметр бинарного дерева - наибольшая длина между двумя любыми узлами в дереве (необязательно включая корневой элемент всего дерева).
Длина между двумя узлами дерева - количество ребер между ними.
Пример:
Ввод: root = [1,2,3,4,5]
Вывод: 3
Объяснение: длина пути [4,2,1,3] или пути [5,2,1,3].
Ввод: root = [1,2]
Вывод: 1
Решение задачи
Сложность: Лёгкая
Условие задачи: дан корневой элемент бинарного дерева, необходимо расчитать диаметр бинарного дерева.
Диаметр бинарного дерева - наибольшая длина между двумя любыми узлами в дереве (необязательно включая корневой элемент всего дерева).
Длина между двумя узлами дерева - количество ребер между ними.
Пример:
Ввод: root = [1,2,3,4,5]
Вывод: 3
Объяснение: длина пути [4,2,1,3] или пути [5,2,1,3].
Ввод: root = [1,2]
Вывод: 1
Решение задачи
👍5🤔1
Сравнение стёртых строк
Сложность: Лёгкая
Условие задачи: даны две строки, необходимо выяснить являются они идентичными после удаления символов путем использования клавиши backspace (символ #).
Если строка пустая, то backspace оставляет её пустой.
Пример:
Ввод:
Вывод:
Объяснение: обе строки после использования удаления символов образуют сроку
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: даны две строки, необходимо выяснить являются они идентичными после удаления символов путем использования клавиши backspace (символ #).
Если строка пустая, то backspace оставляет её пустой.
Пример:
Ввод:
s = "ab#c", t = "ad#c"Вывод:
trueОбъяснение: обе строки после использования удаления символов образуют сроку
"ac"Ввод:
s = "ab##", t = "c#d#"Вывод:
trueВвод:
s = "a#c", t = "b"Вывод:
falseРешение задачи
👍3👎1
Тройная сумма
Сложность: Средняя
Условие задачи: дан целочисленный массив nums, вычислите все тройки
Решение не должно содержать дубликатов.
Пример:
Ввод:
Вывод:
Объяснение:
Но уникальные тройки -
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дан целочисленный массив nums, вычислите все тройки
[nums[i], nums[j], nums[k]] такие что i != j, i != k, и j != k, и nums[i] + nums[j] + nums[k] == 0.Решение не должно содержать дубликатов.
Пример:
Ввод:
nums = [-1,0,1,2,-1,-4]Вывод:
[[-1,-1,2],[-1,0,1]]Объяснение:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0.
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0.
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0.Но уникальные тройки -
[-1,0,1] и [-1,-1,2].Ввод:
nums = [0,1,1]Вывод:
[]Решение задачи
👍2
Сумма по пути III
Сложность: Средняя
Условие задачи: дан указатель на корень бинарного дерева и целое число - значение таргета. Надо посчитать количество путей в дереве, сумма значений в узлах которых равна целевому значению.
Путь может начинаться с любого из узлов дерева, но при этом путь должен сожержать лишь узлы-родственники.
Пример:
Ввод:
Вывод:
Объяснение: *во вложении
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дан указатель на корень бинарного дерева и целое число - значение таргета. Надо посчитать количество путей в дереве, сумма значений в узлах которых равна целевому значению.
Путь может начинаться с любого из узлов дерева, но при этом путь должен сожержать лишь узлы-родственники.
Пример:
Ввод:
root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8Вывод:
3Объяснение: *во вложении
Ввод:
root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22Вывод:
3Решение задачи
👍8
Поиск в сдвинутом сортированном массиве
Сложность: Средняя
Условие задачи: дан массив, сдвинутый относительно опорного элемента, который неизвестен ( массив после сдвига относительно опорного элемента имеет следующий вид:
Массив
Необходимо осуществить поиск целевого элемента в сдвинутом массиве, определив его индекс, или же вывести
Решение должно быть за
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дан массив, сдвинутый относительно опорного элемента, который неизвестен ( массив после сдвига относительно опорного элемента имеет следующий вид:
[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Решение задачи
👍4
Балансировка бинарного дерева
Сложность: Лёгкая
Условие задачи: дается бинарное дерево, определите является ли дерево сбалансированным.
Для данной проблемы сбалансированным по высоте деревом является бинарное дерево, у которого для каждого родителя есть оба потомка, если потомки вообще имеются.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево, определите является ли дерево сбалансированным.
Для данной проблемы сбалансированным по высоте деревом является бинарное дерево, у которого для каждого родителя есть оба потомка, если потомки вообще имеются.
Пример:
Ввод:
root = [3,9,20,null,null,15,7]Вывод:
trueВвод:
root = [1,2,2,3,3,null,null,4,4]Вывод:
trueРешение задачи
👍3
Городской судья
Сложность: Лёгкая
Условие задачи: в городе живёт n людей, проиндексированные с 1 до n. Пошел слух, что один из горожан является судьей.
Если в городе-таки имеется судья, то:
1. Судья никому не доверяет.
2. Каждый горожанин, за исключением судьи, доверяет судье.
3. Существует один и единственный человек, который удовлетворяет правилам 1 и 2.
На вход подается массив связей доверия между гражданами, где
Вывести надо индекс судьи или же -1 в случае отсутствия такового среди жителей города.
Пример:
Ввод:
Вывод:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: в городе живёт n людей, проиндексированные с 1 до n. Пошел слух, что один из горожан является судьей.
Если в городе-таки имеется судья, то:
1. Судья никому не доверяет.
2. Каждый горожанин, за исключением судьи, доверяет судье.
3. Существует один и единственный человек, который удовлетворяет правилам 1 и 2.
На вход подается массив связей доверия между гражданами, где
trust[i] = [ai, bi] обозначает, что ai доверяет жителю bi.Вывести надо индекс судьи или же -1 в случае отсутствия такового среди жителей города.
Пример:
Ввод:
n = 2, trust = [[1,2]]Вывод:
2Ввод:
n = 3, trust = [[1,3],[2,3],[3,1]]Вывод:
-1Решение задачи
👍11
Мост наименьшей длины
Сложность: Средняя
Условие задачи: на вход подается матрица, в которой 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
Решение задачи
👍5
Минимальная глубина бинарного дерева
Сложность: Лёгкая
Условие задачи: дано бинарное дерево. Необходимо найти минимальную глубину дерева.
Глубина дерева - количество узлов от корня до ближайшего потомка.
Пример:
Ввод: root = [3,9,20,null,null,15,7]
Вывод: 2
Ввод: root = [2,null,3,null,4,null,5,null,6]
Вывод: 5
Решение задачи
Сложность: Лёгкая
Условие задачи: дано бинарное дерево. Необходимо найти минимальную глубину дерева.
Глубина дерева - количество узлов от корня до ближайшего потомка.
Пример:
Ввод: root = [3,9,20,null,null,15,7]
Вывод: 2
Ввод: root = [2,null,3,null,4,null,5,null,6]
Вывод: 5
Решение задачи
👍5