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
Генерация скобок

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

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

Пример:
Ввод: n = 3
Вывод: ["((()))","(()())","(())()","()(())","()()()"]

Ввод: n = 1
Вывод: ["()"]

Решение задачи
👍2
Весовая сумма списка 2

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

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

Глубина целого числа — это количество списков, внутри которых оно находится. Например, во вложенном списке [1,[2,2],[[3],2],1] каждому целочисленному значению соответствует его глубина. Пусть maxDepth будет максимальной глубиной любого целого числа. Вес целого числа равен maxDepth - (глубина целого числа) + 1.

Верните сумму каждого целого числа во вложенном списке, умноженную на его вес.

Значения целых чисел во вложенном списке находятся в диапазоне [-100, 100].
Максимальная глубина любого целого числа меньше или равна 50.

Пример:
Ввод: nestedList = [[1,1],2,[1,1]]
Вывод: 8
Объяснение: Четыре единицы с весом 1, одна двойка с весом 2.
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8

Ввод: nestedList = [1,[4,[6]]]
Вывод: 17

Решение задачи
👍61
Знак произведения массива

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

Условие задачи:
Существует функция signFunc(x), которая возвращает:
1, если x положительно
-1, если x отрицательно
0, если x равно 0.
Вам дается целочисленный массив nums. Пусть product - это произведение всех значений в массиве nums. Верните signFunc(product).

Пример:
Ввод: nums = [-1,-2,-3,-4,3,2,1]
Вывод: 1
Объяснение: Произведение всех значений в массиве равно 144, а signFunc(144) = 1.

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

Решение задачи
👍1🔥1
Наибольший общий префикс

Частота встречи задач на собеседованиях за последние шесть месяцев:
Facebook* — 21, Amazon — 16, Apple — 14, Adobe — 11, Google — 9, Microsoft — 6, Uber — 6.

Условие задачи:
Напишите функцию для поиска самого длинного общего префикса у массива строк. Если общего префикса нет, верните пустую строку.

Требуемая сложность:
O(S), S — сумма всех символов во всех строках.

Примеры:
Ввод: strs = ["flower","flow","flight"]
Вывод: "fl"

Ввод: strs = ["dog","racecar","car"]
Вывод: ""
Среди введенных строк нет общего префикса.

Решение задачи

* — организация, признанная экстремистской на территории РФ.
👍4
Удалить N-й узел из конца списка

Получив head связанного списка, удалите n-й узел из конца списка и верните его head.

Пример 1 (на картинке):
Ввод: head = [1,2,3,4,5], n = 2
Вывод: [1,2,3,5]

Пример 2:
Ввод: head = [1], n = 1
Вывод: []

Пример 3:
Input: head = [1,2], n = 1
Output: [1]

Решение задачи
👍3
Минимальная разница во времени

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

Условие задачи:
Дан список 24-часовых временных точек в формате "ЧЧ:ММ". Требуется вернуть минимальную разницу в минутах между любыми двумя временными точками в списке.

Пример:
Ввод: timePoints = ["23:59","00:00"]
Вывод: 1

Ввод: timePoints = ["00:00","23:59","00:00"]
Вывод: 0

Решение задачи
👍2
Буквенные комбинации номера телефона

Получив строку, содержащую цифры от 2 до 9 включительно, вернуть все возможные комбинации букв, которые может представлять число. Верните ответ в любом порядке. Отображение цифр в буквы (точно так же, как на телефонных кнопках) приведено на картинке. Обратите внимание, что 1 не соответствует ни одной букве.

Примеры:
Ввод: nums = "23"
Вывод: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]

Ввод: digits = ""
Вывод: []

Ввод: digits = "2"
Вывод: ["a","b","c"]

Решение задачи
👍4
Самая длинная последовательная последовательность

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

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

Вы должны написать алгоритм, который работает за время O(n).

Пример:
Ввод: nums = [100,4,200,1,3,2]
Вывод: 4
Объяснение: Самая длинная последовательность последовательных элементов — [1, 2, 3, 4]. Следовательно, его длина равна 4.

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

Решение задачи
👍2🔥1
Лучшее время для покупки и продажи акций

Условие задачи:
Вам дан массив prices, где prices[i] — цена данной акции на i-й день.

Вы хотите максимизировать свою прибыль, выбрав один день для покупки одной акции и выбрав другой день в будущем для продажи этой акции.

Верните максимальную прибыль, которую вы можете получить от этой сделки. Если вы не можете получить никакой прибыли, верните 0.

Пример:
Ввод: prices = [7,1,5,3,6,4]
Вывод: 5
Объяснение:
Покупка во 2-й день (цена = 1) и продажа в 5-й день (цена = 6), прибыль = 6-1 = 5.
Обратите внимание, что покупка во 2-й день и продажа в 1-й день не разрешены, потому что вы должны купить перед продажей.

Ввод: prices = [7,6,4,3,1]
Вывод: 0

Решение задачи
👍6
Целое число английскими словами

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

Условие задачи:
Преобразуйте неотрицательное целое число num в его представление английскими словами.

Пример:
Ввод: num = 123
Вывод: "One Hundred Twenty Three"

Ввод: num = 12345
Вывод: "Twelve Thousand Three Hundred Forty Five"

Решение задачи
👍6
Уникальные тропы

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

Условие задачи: дано поле размером m x n. Изначально робот находится в левом верхнем углу. Необходимо посчитать сколькими возможными уникальными путями робот может добраться в правый нижний угол.

Робот может двигаться лишь вправо и вниз.

Пример:

Ввод: m = 3, n = 7
Вывод: 28.

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

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

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

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

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

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

Решение задачи
👍3
Удали и Заработай

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

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

Выберите любое число nums[i] и удалите его, чтобы заработать очки nums[i]. После этого вы должны удалить каждый элемент, равный nums[i] - 1, и каждый элемент, равный nums[i] + 1.
Верните максимальное количество очков, которое вы можете заработать, применив описанную выше операцию несколько раз.

Пример:
Ввод: nums = [3,4,2]
Вывод: 6
Объяснение:
Вы можете выполнять следующие операции:
- Удалите 4, чтобы заработать 4 очка. Следовательно, 3 также удаляется. nums = [2].
- Удалите 2, чтобы заработать 2 очка. nums = [].
Всего вы заработаете 6 баллов.

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

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

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

Условие задачи:
Дан массив nums различных целых чисел. Требуется вернуть все возможные перестановки. Вы можете вернуть ответ в любом порядке.

Пример:
Ввод: nums = [1,2,3]
Вывод: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

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

Решение задачи
👍2🔥1
Изменение порядка следования элементов связного списка

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

Условие задачи : дан связный список:
L0 → L1 → … → Ln - 1 → Ln.

Надо переопределить порядок следования элементов на следующий:
L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …

Пример:

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

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

Решение задачи
👍43
Jump Game II

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

Условие:
Получив массив неотрицательных целых чисел nums, вы изначально позиционируетесь в первом индексе массива. Каждый элемент массива представляет максимальную длину прыжка в этой позиции. Ваша цель - достичь последнего индекса за минимальное количество прыжков. Вы можете предположить, что вы всегда можете добраться до последнего индекса.

Примеры:
Ввод: nums = [2,3,1,1,4]
Вывод: 2
Объяснение: Минимальное количество переходов для достижения последнего индекса равно 2. Перейти на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.

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

Решение задачи
👍4
Подсчет уникальных символов всех подстрок заданной строки

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

Условие задачи:
Давайте определим функцию countUniqueChars(s), которая возвращает количество уникальных символов в s.

Например, вызов countUniqueChars(s), если s = "LEETCODE", тогда "L", "T", "C", "O", "D" являются уникальными символами, поскольку они появляются только один раз в s, поэтому countUniqueChars(s ) = 5.
Для строки s вернуть сумму countUniqueChars(t), где t — подстрока s. Тестовые примеры генерируются таким образом, чтобы ответ помещался в 32-битное целое число.

Обратите внимание, что некоторые подстроки могут повторяться, поэтому в этом случае вам также придется считать повторяющиеся.

Строка s состоит только из заглавных английских букв.

Пример:
Ввод: s = "ABC"
Вывод: 10
Объяснение:
Все возможные подстроки: «A», «B», «C», «AB», «BC» и «ABC».
Каждая подстрока состоит только из уникальных букв.
Сумма длин всех подстрок равна 1 + 1 + 1 + 2 + 2 + 3 = 10

Ввод: s = "ABA"
Вывод: 8

Решение задачи
🤔4👍1
Поиск дубликата

Условие задачи:
Дан массив целых чисел nums, содержащий n + 1 целых чисел, где каждое целое число находится в диапазоне [1, n] включительно.

В nums есть только одно повторяющееся число, верните это повторяющееся число.

Вы должны решить задачу, не изменяя элементы массива и используя только постоянное дополнительное пространство.

Все целые числа в nums отображаются только один раз, за исключением ровно одного целого числа, которое появляется два или более раз.

Примеры:
Ввод: nums = [1,3,4,2,2]
Вывод: 2

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

Решение задачи
👍4
Валидный судоку

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

Условие:
Определите, валидна ли доска судоку 9 x 9. Только заполненные ячейки должны быть проверены в соответствии со следующими правилами:
1. Каждая строка должна содержать цифры 1–9 без повторения.
2. Каждый столбец должен содержать цифры 1–9 без повторения.
3. Каждый из девяти подблоков сетки 3 x 3 должен содержать цифры 1–9 без повторения.

Доска судоку (частично заполненная) может быть валидной, но не обязательно решаемой. Только заполненные ячейки должны быть проверены в соответствии с указанными правилами.

Примеры:
Пример 1 (на картинке):
Ввод: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Вывод: true

Пример 2:
Ввод: board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Вывод: false
Объяснение: то же, что и в примере 1, за исключением того, что цифра 5 в верхнем левом углу изменена на 8. Поскольку в верхнем левом подблоке 3x3 есть две восьмерки, это неверно.

Решение задачи
👍31
Перевернуть порядок следования элементов связного списка

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

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

Пример:

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

Решение задачи
👍5