Ключи и комнаты
Сложность: Средняя
Условие задачи: есть
При посещении какой-либо комнаты в ней находится определенная связка уникальных ключей, номер ключа означет номер комнаты, для которой он отпирает дверь. Можно использовать сразу все связку ключей.
На вход подается массив комнат, где в 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Решение задачи
👍2
Расшифровка строки
Сложность: Средняя
Условие задачи: сообщение содержит символы из множества
На воход подается строка , состоящая из чисел, необходимо посчитать сколькими способами можно ее расшифровать.
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: сообщение содержит символы из множества
A-Z и может быть расшифровано следующим образом:'A' -> "1"
'B' -> "2"
...
'Z' -> "26"На воход подается строка , состоящая из чисел, необходимо посчитать сколькими способами можно ее расшифровать.
Пример:
Ввод:
s = "12"Вывод:
2Объяснение:
"12" можно расшифровать двумя путями: как (1 2) = "AB", а также как и (12) = "L".Ввод:
s = "226"Вывод:
3Решение задачи
👍2❤1
Арифметическая прогрессия в массиве
Сложность: Средняя
Условие задачи: дан массив, который называется массивом арифметической прогрессии в случае, если содержит как минимум три элемента, а разница между соседними элементами одинаковая.
Массивы [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
Решение задачи
Палиндром наибольшей длины в подстроке
Сложность: Средняя
Условие задачи: дана строка, необходимо найти в ней палиндром наибольшей длины.
Палиндром - строка, которая одинаково читается как справа-налево, так и слева-направо.
Пример:
Ввод: s = "babad"
Вывод: "bab"
Объяснение: "aba" также является ответом
Ввод: s = "cbbd"
Вывод: "bb"
Решение задачи
Сложность: Средняя
Условие задачи: дана строка, необходимо найти в ней палиндром наибольшей длины.
Палиндром - строка, которая одинаково читается как справа-налево, так и слева-направо.
Пример:
Ввод: s = "babad"
Вывод: "bab"
Объяснение: "aba" также является ответом
Ввод: s = "cbbd"
Вывод: "bb"
Решение задачи
👍2
Поддерево дерева
Сложность: Лёгкая
Условие задачи: даны корни бинарных деревьев
Пример:
Ввод:
Вывод:
Объяснение: *на картинке к задаче
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: даны корни бинарных деревьев
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Решение задачи
👍1
Первая плохая версия
Сложность: Лёгкая
Условие задачи: производится разработка нового программного продукта, и на последней проверке было выявлено, что версия ПО не прошла проверку качества. Каждая следующая версия зависит от предыдущей, то есть если текущая версия не проходит проверки, то все последующие также не годны для какого-либо обслуживания.
Предоставляется n - версий, нумерованных с единицы, необходимо найти первую неисправную версию ПО.
Также дается интерфейс
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод:
Решение задачи
Сложность: Лёгкая
Условие задачи: производится разработка нового программного продукта, и на последней проверке было выявлено, что версия ПО не прошла проверку качества. Каждая следующая версия зависит от предыдущей, то есть если текущая версия не проходит проверки, то все последующие также не годны для какого-либо обслуживания.
Предоставляется n - версий, нумерованных с единицы, необходимо найти первую неисправную версию ПО.
Также дается интерфейс
bool isBadVersion(version), который производит проверку на то, является ли проверяемая версия неисправной. Решить задачу необходимо за минимальное количество вызовов чекера. Пример:
Ввод:
n = 5, bad = 4Вывод:
4Объяснение:
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
4 - первая испорченная версия.Ввод:
Вывод:
Решение задачи
👍2
Слияние двух отсортированных массивов
Сложность: Лёгкая
Условие задачи: даны два массива, отсортированные в порядке неубывания, а также две переменные 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]
Решение задачи👍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]
Решение задачи👍1
Комбинация сумм II
Сложность: Средняя
Условие задачи: на вход дается список возможных кандидатов и целевое значение суммы, необходимо вывести все комбинации, которыми можно получить целевое значение.
Каждое число из списка кандидатов должно содержаться в конечном подсписке из ответов ровно один раз.
Результирующий ответ не должен содержать в себе дубликатов.
Пример:
Ввод: candidates = [10,1,2,7,6,1,5], target = 8
Вывод: [
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]
Ввод: candidates = [2,5,2,1,2], target = 5
Вывод: [
[1,2,2],
[5]
]
Решение задачи
Сложность: Средняя
Условие задачи: на вход дается список возможных кандидатов и целевое значение суммы, необходимо вывести все комбинации, которыми можно получить целевое значение.
Каждое число из списка кандидатов должно содержаться в конечном подсписке из ответов ровно один раз.
Результирующий ответ не должен содержать в себе дубликатов.
Пример:
Ввод: candidates = [10,1,2,7,6,1,5], target = 8
Вывод: [
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]
Ввод: candidates = [2,5,2,1,2], target = 5
Вывод: [
[1,2,2],
[5]
]
Решение задачи
👍2
Сумма на отрезке
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, дается два числа low и high, необходимо посчитать сумму узлов дерева, находящихся в пределах данного отрезка [low, high].
Пример:
Ввод: root = [10,5,15,3,7,null,18], low = 7, high = 15
Вывод: 32
Объяснение: в данный отрезок входят числа 7, 10, 15.
Решение задачи
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, дается два числа low и high, необходимо посчитать сумму узлов дерева, находящихся в пределах данного отрезка [low, high].
Пример:
Ввод: root = [10,5,15,3,7,null,18], low = 7, high = 15
Вывод: 32
Объяснение: в данный отрезок входят числа 7, 10, 15.
Решение задачи
Матрица 01
Сложность: Средняя
Условие задачи: дается бинарная матрица (состоит только из 0 и 1). Необходимо вернуть матрицу, в которой будет отображаться расстояние от каждой единичной клетки до ближайшей нулевой.
Пример:
Ввод: mat = [[0,0,0],[0,1,0],[0,0,0]]
Вывод: [[0,0,0],[0,1,0],[0,0,0]]
Объяснение: *во вложении
Ввод: mat = [[0,0,0],[0,1,0],[1,1,1]]
Вывод: [[0,0,0],[0,1,0],[1,2,1]]
Решение задачи
Сложность: Средняя
Условие задачи: дается бинарная матрица (состоит только из 0 и 1). Необходимо вернуть матрицу, в которой будет отображаться расстояние от каждой единичной клетки до ближайшей нулевой.
Пример:
Ввод: mat = [[0,0,0],[0,1,0],[0,0,0]]
Вывод: [[0,0,0],[0,1,0],[0,0,0]]
Объяснение: *во вложении
Ввод: mat = [[0,0,0],[0,1,0],[1,1,1]]
Вывод: [[0,0,0],[0,1,0],[1,2,1]]
Решение задачи
❤1👍1
Максимальное произведение разделенного бинарного дерева
Сложность: Средняя
Условие задачи: дается корень бинарного дерева, необходимо ражзделить его на две части таким образом, чтобы при извлечении одного ребра произведение сумм двух поддеревьев было максимальным.
Необходимо вычислить это произведение. Так как произведение может быть слишком большим, то необходимо посчитать результат по модулю 1е9 + 7.
Пример:
Ввод:
Вывод:
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: дается корень бинарного дерева, необходимо ражзделить его на две части таким образом, чтобы при извлечении одного ребра произведение сумм двух поддеревьев было максимальным.
Необходимо вычислить это произведение. Так как произведение может быть слишком большим, то необходимо посчитать результат по модулю 1е9 + 7.
Пример:
Ввод:
root = [1,2,3,4,5,6]Вывод:
110Объяснение: *во вложении
Решение задачи
👍1
Максимальная сумма по ребрам бинарного дерева
Сложность: Тяжёлая
Условие задачи: путем в бинарном дереве является последовательность узлов, где каждая пара соседних узлов в последовательности соединена ребром. Узел может появляться в последовательности лишь единожды. Путь не обязательно должен проходить через корень дерева.
Сумма по ребрам в дереве представляет из себя сумму значений из узлов.
На вход подается корень, необходимо вычислить максимальную сумму по ребрам.
Пример:
Ввод:
Вывод:
Объяснение: путь
Решение задачи
Сложность: Тяжёлая
Условие задачи: путем в бинарном дереве является последовательность узлов, где каждая пара соседних узлов в последовательности соединена ребром. Узел может появляться в последовательности лишь единожды. Путь не обязательно должен проходить через корень дерева.
Сумма по ребрам в дереве представляет из себя сумму значений из узлов.
На вход подается корень, необходимо вычислить максимальную сумму по ребрам.
Пример:
Ввод:
root = [-10,9,20,null,null,15,7]Вывод:
42Объяснение: путь
15 -> 20 -> 7 имеет наибольшую сумму в дереве. Решение задачи
👍1
Подъем по ступеням
Сложность: Лёгкая
Условие задачи: человек поднимается по ступенькам. Для подъема на вершину лестницы необходимо сделать n шагов.
При каждом шаге можно делать выбор: подниматься на 1 или же на 2 шага. Нужно посчитать сколькими способами можно подняться на вершину.
Пример:
Ввод: n = 2
Вывод: 2
Объяснение: существует лишь два варианта:
1. 1 шаг + 1 шаг;
2. 2 шага.
Ввод: n = 3
Вывод: 3
Объяснение:
1. 1 шаг + 1 шаг + 1 шаг
2. 1 шаг + 2 шага
3. 2 шага + 1 шаг
Решение задачи
Сложность: Лёгкая
Условие задачи: человек поднимается по ступенькам. Для подъема на вершину лестницы необходимо сделать n шагов.
При каждом шаге можно делать выбор: подниматься на 1 или же на 2 шага. Нужно посчитать сколькими способами можно подняться на вершину.
Пример:
Ввод: n = 2
Вывод: 2
Объяснение: существует лишь два варианта:
1. 1 шаг + 1 шаг;
2. 2 шага.
Ввод: n = 3
Вывод: 3
Объяснение:
1. 1 шаг + 1 шаг + 1 шаг
2. 1 шаг + 2 шага
3. 2 шага + 1 шаг
Решение задачи
👍1
Атака Тимо
Сложность: Лёгкая
Условие задачи: происходит абстрактная ситуация наш персонаж Тимо атакует своего соперника Эша. Результатом атаки является отравление оппонента на
Если Тимо решит нанести ещё один удар до окончания действия отравления от предыдущего, то итоговое отравление закончится через
На вход подаётся массив из моментов времени нападений, а также длительность действия яда. Необходимо вычислить суммарную длительность действия отравы.
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: происходит абстрактная ситуация наш персонаж Тимо атакует своего соперника Эша. Результатом атаки является отравление оппонента на
duration секунд. То есть начав атаку в момент времени t отравление будет длиться в промежуток времени [t, t + duration - 1]. Если Тимо решит нанести ещё один удар до окончания действия отравления от предыдущего, то итоговое отравление закончится через
duration секунд. На вход подаётся массив из моментов времени нападений, а также длительность действия яда. Необходимо вычислить суммарную длительность действия отравы.
Пример:
Ввод:
timeSeries = [1,4], duration = 2
Вывод: 4
Решение задачи❤1👍1
Возрастающая подпоследовательность наибольшей длины
Сложность: Средняя
Условие задачи: даётся массив, необходимо вычислить наибольшую длину строго возрастающей подпоследовательности.
Пример:
Ввод: nums = [10,9,2,5,3,7,101,18]
Вывод: 4
Объяснение: подпоследовательность [2,3,7,101] имеет наибольшую длину.
Решение задачи
Сложность: Средняя
Условие задачи: даётся массив, необходимо вычислить наибольшую длину строго возрастающей подпоследовательности.
Пример:
Ввод: nums = [10,9,2,5,3,7,101,18]
Вывод: 4
Объяснение: подпоследовательность [2,3,7,101] имеет наибольшую длину.
Решение задачи
❤1👍1
Ряд клавиатуры
Сложность: Лёгкая
Условие задачи: дается массив из строк, необходимо вернуть те строки из массива, которые могут быть набраны лишь при использовании знаков из одного ряда.
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод: [ ]
Решение задачи
Сложность: Лёгкая
Условие задачи: дается массив из строк, необходимо вернуть те строки из массива, которые могут быть набраны лишь при использовании знаков из одного ряда.
Пример:
Ввод:
words = ["Hello","Alaska","Dad","Peace"]Вывод:
["Alaska","Dad"]Объяснение:
Ввод:
words = ["omk"]Вывод: [ ]
Решение задачи
👍1
Сумма вдоль столбцов
Сложность: Средняя
Условие задачи: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.
Есть условие на движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.
Пример:
Ввод: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.
Есть условие на движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.
Пример:
Ввод: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Объяснение: *во вложении
Решение задачи
👍1
Поиск моды в бинарном дереве поиска
Сложность: Лёгкая
Условие задачи: дается бинарное дерево поиска, содержащее дубликаты, необходимо вывести все моды, встречающиеся в дереве.
Мода - элемент, встречающийся чаще всех в какой-либо структуре данных.
Пример:
Ввод: 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
Решение задачи
👍1👎1