LeetCode Community
9.75K subscribers
802 photos
5 videos
1.1K links
Сообщество пользователей-фанатов LeetCode. 🦾

Ссылка для друга: https://t.me/+fhGikrkptrpkYmIy

По всем вопросам: @mascarov_valentin или @adv_and_pr

НЕ являемся официальным каналом leetcode.com.

№4974320675
Download Telegram
Тройная сумма

Сложность: Средняя

Условие задачи: дан целочисленный массив 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).

Пример:

Ввод:
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

Решение задачи
👍4🔥2
Является ли строка палиндромом

Сложность: Лёгкая

Условие: палиндромом является фраза, которая после перевода в нижний регистр всех символов, а также удаления всех знаков препинания, читается одинаково как слева направо, так и справа налево.

Задача - вернуть 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 часто встречающихся элементов. Порядок чисел в ответе не имеет значения.

Гарантируется, что ответ уникальный. То есть несколько элементов не могут встречаться одинаковое количество раз.

Пример:

Ввод: 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

Решение задачи
👍6
Уникальные бинарные деревья поиска

Сложность: Средняя

Условие задачи: дано целое число 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

Решение задачи
👍21
Вращение изображения

Сложность: Средняя

Условие задачи: дан двумерный массив, представляющий из себя изоражение, необходимо провращать данное изображение на 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

Решение задачи
👍4
Мост наименьшей длины

Сложность: Средняя

Условие задачи: на вход подается матрица, в которой 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-раз.

Трубуется найти максимальную длину строки с одинаковым символом. Символом может быть любая из букв латинского алфавита, находящаяся в верхнем регистре.

Пример:

Ввод: 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]

Решение задачи
👍5
Степень двойки

Сложность: Лёгкая

Условие задачи: даётся целое число n, необходимо проверить, является ли число степенью двойки или же нет.

Пример:

Ввод:
n = 1
Вывод:
true

Решение задачи
👍51
Нахождение всех анаграмм в строке

Сложность: Средняя

Условие задачи: даны две строки 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 в качестве потомков (где мы разрешаем узлу быть потомком самого себя).

Пример:

Ввод:
[6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
Вывод:
6
Объяснение:
*на картинке

Решение задачи
👍3
Максимальный подмассив

Сложность: Средняя

Условие задачи: дан целочисленный массив, необходимо найти в нем такой подмассив, сумма элементов в котором будет максимальной.

Подмассивом называется последовательная часть исходного массива.

Пример:

Ввод:
nums = [-2,1,-3,4,-1,2,1,-5,4]
Вывод:
6

Объяснение:
4,-1,2,1] имеет наибольшую сумму 6.

Ввод:
nums = [5,4,-1,7,8]
Вывод:
23

Решение задачи
👍4
Переспелые апельсины

Сложность: Средняя

Условие задачи: дана двумерная решетка размера 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