Сортировка связного списка
Сложность: Средняя
Условие задачи: дан односвязный список, необходимо отсортировать узлы списка по значению в порядке возрастания
Пример:
Ввод:
Решение задачи
Сложность: Средняя
Условие задачи: дан односвязный список, необходимо отсортировать узлы списка по значению в порядке возрастания
Пример:
Ввод:
head = [4,2,1,3]
Вывод: [1,2,3,4]
Ввод: head = [-1,5,3,4,0]
Вывод: [-1,0,3,4,5]
Можете ли вы отсортировать связанный список за O (n logn) времени и O(1) памяти (т.е. постоянного пространства)?Решение задачи
👍3
Спиральная матрица
Сложность: Средняя
Условие задачи: дан двумерный массив, надо вернуть все его элементы в "спиральном" порядке по часовой стрелке.
Пример:
Ввод:
Сложность: Средняя
Условие задачи: дан двумерный массив, надо вернуть все его элементы в "спиральном" порядке по часовой стрелке.
Пример:
Ввод:
matrix = [[1,2,3],[4,5,6],[7,8,9]]
Вывод: [1,2,3,6,9,8,7,4,5]
Ввод: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Вывод: [1,2,3,4,8,12,11,10,9,5,6,7]
Решение задачи👍4
Тройная сумма
Сложность: Средняя
Условие задачи: дан целочисленный массив 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]Вывод:
[]Решение задачи
👍3🤔1
К-ый наименьший элемент в бинарном дереве поиска
Сложность: Средняя
Условие задачи: на вход подается бинарное дерево поиска, необходимо осуществить в нем поиск К-наименьшего элемента (при условии индексирования с 1).
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается бинарное дерево поиска, необходимо осуществить в нем поиск К-наименьшего элемента (при условии индексирования с 1).
Пример:
Ввод:
root = [3,1,4,null,2], k = 1Вывод:
1Объяснение:
Ввод:
root = [5,3,6,2,4,null,null,1], k = 3Вывод:
3Решение задачи
👍2
Прямой обход дерева
Сложность: Лёгкая
Условие задачи: дано дерево, необходимо преобразовать дерево прямого прохода (корень -> левый потомок -> правый потомок).
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: дано дерево, необходимо преобразовать дерево прямого прохода (корень -> левый потомок -> правый потомок).
Пример:
Ввод:
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]
Решение задачи