Топ 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
Нахождение опорного элемента
Сложность: Лёгкая
Условие задачи: дан массив, состоящий из целых чисел. Необходимо вернуть опорный элемент массива.
Опорным называется такое число массива, относительно которого сумма элементов находящихся слева, равна сумме элементов, расположенных справа.
Необходимо вернуть индекс самого левого опороного элемента, в случае отсутствия такового - вернуть -1.
Пример:
Ввод:
Опорный элемент -
Сложность: Лёгкая
Условие задачи: дан массив, состоящий из целых чисел. Необходимо вернуть опорный элемент массива.
Опорным называется такое число массива, относительно которого сумма элементов находящихся слева, равна сумме элементов, расположенных справа.
Необходимо вернуть индекс самого левого опороного элемента, в случае отсутствия такового - вернуть -1.
Пример:
Ввод:
nums = [1,7,3,6,5,6]
Вывод: 3
Объяснение: Left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11Right sum = nums[4] + nums[5] = 5 + 6 = 11
Ввод: nums = [1,2,3]
Вывод: -1
Ввод: nums = [2,1,-1]
Вывод: 0
Объяснение: Опорный элемент -
0.
Left sum = 0 (нет элементов левее индекса 0)
Right sum = nums[1] + nums[2] = 1 + -1 = 0
Решение задачи👍3
Палиндромная перестановка II
Сложность задачи: Средняя
Условие задачи:
Дана строка s. Требуется вернуть все ее палиндромные перестановки (без дубликатов).
Вы можете вернуть ответ в любом порядке. Если s не имеет палиндромной перестановки, вернуть пустой список.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дана строка s. Требуется вернуть все ее палиндромные перестановки (без дубликатов).
Вы можете вернуть ответ в любом порядке. Если s не имеет палиндромной перестановки, вернуть пустой список.
Пример:
Ввод:
s = "aabb"
Вывод: ["abba","baab"]
Ввод: s = "abc"
Вывод: []
Решение задачи👍2🎄1
Doodle Jump
Сложность задачи: Средняя
Условие задачи:
Вам дан целочисленный массив nums. Изначально вы находитесь в первом индексе массива, и каждый элемент массива представляет максимальную длину прыжка в этой позиции.
Верните true, если вы можете добраться до последнего индекса, или false в противном случае.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Вам дан целочисленный массив nums. Изначально вы находитесь в первом индексе массива, и каждый элемент массива представляет максимальную длину прыжка в этой позиции.
Верните true, если вы можете добраться до последнего индекса, или false в противном случае.
Пример:
Ввод:
nums = [1,3,1,1,4]
Вывод: true
Объяснение: Переходим на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.Ввод:
nums = [3,2,1,0,4]
Вывод: false
Решение задачи👍2
Одно редактирование
Сложность задачи: Средняя
Условие задачи:
Даны две строки s и t. Требуется вернуть true, если обе они находятся на расстоянии редактирования друг от друга, в противном случае вернуть false.
Говорят, что строка s находится на расстоянии редактирования от строки t, если вы можете:
• Вставить ровно один символ в s, чтобы получить t.
• Удалить ровно один символ из s, чтобы получить t.
• Заменить ровно один символ s другим символом, чтобы получить t.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Даны две строки s и t. Требуется вернуть true, если обе они находятся на расстоянии редактирования друг от друга, в противном случае вернуть false.
Говорят, что строка s находится на расстоянии редактирования от строки t, если вы можете:
• Вставить ровно один символ в s, чтобы получить t.
• Удалить ровно один символ из s, чтобы получить t.
• Заменить ровно один символ s другим символом, чтобы получить t.
Пример:
Ввод:
s = "ab", t = "acb"
Вывод: true
Объяснение: Мы можем вставить 'c' в s, чтобы получить t.Ввод:
s = "", t = ""
Вывод: false
Решение задачи👍4❤1