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
Является ли строка палиндромом

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

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

Задача - вернуть 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
Слияние двух отсортированных массивов

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

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

Пример:

Ввод: nums = [1,7,3,6,5,6]
Вывод: 3

Объяснение:
Left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
Right 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 = "aabb"
Вывод: ["abba","baab"]

Ввод: s = "abc"
Вывод: []

Решение задачи
👍2🎄1