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

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

Условие задачи: даны две строки s и t, верните true, если s - подпоследовательность строки t, false - в ином случае.

Подпоследовательностью является строка, полученная из исходной строки путем удаления символов без изменения поряжка следования символов.

Пример:

Ввод: s = "abc", t = "ahbgdc"
Вывод: true

Ввод: s = "axc", t = "ahbgdc"
Вывод: false

Решение задачи
👍2
Мокрые бандиты

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

Условие задачи: Мы - профессиональные грабители, обчищающие дома под Рождество и в каждом ограбленном нами доме оставляем характерный символ: невыключенный кран с водой.

Перед нами стоит задача: ограбить на максимальную сумму дома, находящиеся на проспекте Линкольна, но у данных домов есть характерная черта: при ограбление соседних домов срабатывает сигнализация, вызывающая полицию.

Нам необходимо выяснить какие дома надо ограбить, чтобы получить максимальный куш.

Пример:

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

Объяснение: Грабим 1-ый дом (money = 1), а после навещаем 3-ий дом (money = 3).
Суммарный куш: 1 + 3 = 4.

Решение задачи
👍4
Монетообменик

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

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

Необходимо высчитать наименьшее количество монет, которыми можно получить необходимую сумму или вернуть -1 в случае невозможности.

Количество монет не ограничено.

Пример:

Ввод:
coins = [1,2,5], amount = 11
Вывод:
3
Объяснение:
11 = 5 + 5 + 1

Ввод:
coins = [2], amount = 3
Вывод:
-1

Ввод: coins = [1], amount = 0
Вывод: 0


Решение задачи
👍3
Расшифровка строки

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

Условие задачи: дана строка в формате: k[encoded_string], где k - число повторений зашифрованной строки. Необходимо вывести результирующую строку, которая соответствует расшифровке исходной строки.

Пример:

Ввод:
s = "3[a]2[bc]"
Вывод:
"aaabcbc"

Ввод:
s = "3[a2[c]]"
Вывод:
"accaccacc"

Решение задачи
👍10
Связный список-палидром

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

Условие задачи: дан связный список, необходимо осуществить проверку на то являтеся ли он палиндромом или же нет?

Пример:

Ввод:
head = [1,2,2,1]
Вывод:
true

Ввод:
head = [1,2]
Вывод:
false

Решение задачи
👍5
Расписание дел

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

Условие задачи: дан массив задач, которые надо выполнить (одинаковые буквы означабт одинаковые задачи). И дан временной интрвал, в течение которого нельзя выполнять две одинаковые задачи. В случае невозможности выполнить их в течение заданного времени, компьютер ожидает количество времени (обозначается idle), нужное чтобы уложиться во временной интервал.

Задача выполняется каждую минуту, необходимо вывести наименьшее количество минут ожидания для выполнения всех задач.

Пример:

Ввод:
tasks = ["A","A","A","B","B","B"], n = 2
Вывод: 8
Объяснение: A -> B -> idle -> A -> B -> idle -> A -> B

Ввод: tasks = ["A","A","A","B","B","B"], n = 0
Вывод: 6

Ввод: tasks = ["A","A","A","A","A","A","B","C","D","E","F","G"],
n = 2
Вывод: 16
Объяснение: A -> B -> C -> A -> D -> E -> A -> F -> G -> A -> idle -> idle -> A -> idle -> idle -> A


Решение задачи
👍3
Одно редактирование

Сложность задачи: Средняя

Условие задачи:
Даны две строки s и t. Требуется вернуть true, если обе они находятся на расстоянии редактирования друг от друга, в противном случае вернуть false.

Говорят, что строка s находится на расстоянии редактирования от строки t, если вы можете:
• Вставить ровно один символ в s, чтобы получить t.
• Удалить ровно один символ из s, чтобы получить t.
• Заменить ровно один символ s другим символом, чтобы получить t.

Пример:
Ввод: s = "ab", t = "acb"
Вывод: true
Объяснение: Мы можем вставить 'c' в s, чтобы получить t.

Ввод: s = "", t = ""
Вывод: false

Решение задачи
👍3
Сместить массив

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

Условие задачи: дан массив, необходимо сместить массив на k-элементов, где k - неотрицательное число.

Пример:

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

Ввод: nums = [-1,-100,3,99], k = 2
Вывод: [3,99,-1,-100]

Решение задачи
👍2
Топ k-наиболее часто встречающихся слов

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

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

При одинаковом количестве появлений нескольких слов, необходимо отсортировать данные слова в лексикографическом порядке.

Пример:

Ввод:
words = ["i","love","leetcode","i","love","coding"],
k = 2
Вывод: ["i","love"]

Объяснение: "i" и "love" два наиболее частых слова.
Но заметим, что "i" идет первее, чем "love" как раз-таки из-за алфавитного порядка.

Ввод: words = ["the","day","is","sunny","the","the","the","sunny","is","is"], k = 4
Вывод: ["the","is","sunny","day"]

Решение задачи
👍2
Наиболее эффективное поднятие по ступеням

Сложность задачи: Лёгкая.

Условие задачи: дан целочисленный массив cost, где cost[i] - вес i-ой ступеньки. Находясь на ступени, можно шагнуть либо на следующую либо через одну.

Начинать путь можно либо со ступени с индексом 0 либо с индексом 1.

Задача - пройти всю лестницу с минумальной суммой весов ступеней.

Пример:

Ввод: cost = [10,15,20]
Вывод: 15

Ввод: cost = [1,100,1,1,1,100,1,1,100,1]
Вывод: 6

Решение задачи
👍41
Быки и коровы

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

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

Быки - правильные цифры, находящиеся на нужных позициях.

Коровы - правильные числа, но находящиеся на соответствующих позициях.

Задача - выдать подсказку в формате "xAyB", где x - количество быков, y - количество коров.

Пример:

Ввод:
secret = "1807", guess = "7810"
Вывод: "1A3B"
Объяснение:

Ввод:
secret = "1123", guess = "0111"
Вывод: "1A1B"

Решение задачи
👍71
Вставка в бинарное дерево

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

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

Может существовать несколько возможных вариантов вставок. Необходимо вернуть любой из них.

Пример:

Ввод:
root = [4,2,7,1,3], val = 5
Вывод: [4,2,7,1,3,5]

Объяснение: другой вариант -[5,2,7,1,3,4]


Ввод: root = [40,20,60,10,30,50,70], val = 25
Вывод: [40,20,60,10,30,50,70,null,null,25]

Решение задачи
👍2
Перебор регистра букв

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

Условие задачи: на вход подается строка. Надо вывести все комбинации, которые можно составить из данных символов в верхнем и нижнем регистрах.

Пример:

Ввод:
s = "a1b2"
Вывод:
["a1b2","a1B2","A1b2","A1B2"]
Объяснение:

Ввод:
s = "3z4"
Вывод:
["3z4","3Z4"]

Решение задачи
👍4
Сортировка связного списка

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

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

Пример:

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