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
Комбинация сумм II

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

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

Каждое число из списка кандидатов должно содержаться в конечном подсписке из ответов ровно один раз.

Результирующий ответ не должен содержать в себе дубликатов.

Пример:

Ввод:
candidates = [10,1,2,7,6,1,5], target = 8
Вывод: [
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

Ввод: candidates = [2,5,2,1,2], target = 5
Вывод: [
[1,2,2],
[5]
]

Решение задачи
👍4👎1
Самая длинная счастливая строка

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

Условие задачи:
Строка s называется счастливой, если она удовлетворяет следующим условиям:

• s содержит только буквы «a», «b» и «c».
• s не содержит подстроки «aaa», «bbb» или «ccc».
• s содержит не более a вхождений буквы «a».
• s содержит не более b вхождений буквы «b».
• s содержит не более c вхождений буквы 'c'.

Даны три целых числа a, b и c, вернуть максимально длинную счастливую строку. Если есть несколько самых длинных счастливых строк, верните любую из них. Если такой строки нет, вернуть пустую строку "".

Пример:
Ввод: a = 1, b = 1, c = 7
Вывод: "ccaccbcc"
Пояснение: «ccbccacc» также будет правильным ответом.

Решение задачи
👍82🎉2
Поиск в двумерной матрице II

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

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

- в строке элементы отсортированы по возрастанию (слева - направо);
- в столбце элементы отсортированы по возрастанию (снизу - вверх).

Пример:

Ввод:
matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
Вывод: true

Решение задачи
👍81🔥1🎉1
Число-палиндром

Условие задачи:
Получив целое число x, вернуть true, если x является палиндромом. Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном порядке.

Примеры:
Ввод: х = 121
Вывод: true
Объяснение: 121 читается как 121 слева направо и справа налево.

Ввод: х = -121
Вывод: false
Объяснение: Слева направо это -121. Справа налево получается 121-. Следовательно, это не палиндром.

Ввод: х = 10
Вывод: false

Решение задачи
👍10
Прибавка единицы

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

Условие задачи: на вход подаётся массив из цифр, где на i-ой позиции в массиве находится i-ая цифра в числе.

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

Пример:

Ввод: digits = [‘1
, 2, 3]
Вывод: [‘1
, ‘2’, 4]

Решение задачи
👍92👎1🎉1
Перенос указателя вправо

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

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

Пример:

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


Решение задачи
👍5
Подмассив с наибольшим произведением

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

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

Подмассив - последовательный кусок исходного массива.

Пример:

Ввод:
nums = [2,3,-2,4]
Вывод: 6
Объяснение:
[2, 3] имеют наибольшее произведение.

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

Решение задачи
👍3
Нахождение вершины списка

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

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

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

Алгоритм должен иметь временную сложность O (log n).

Пример:

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

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

Решение задачи
👍6👎2🎉1
Максимальное число из 6 и 9

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

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

Пример:

Ввод:
num = 9669
Вывод: 9969

Ввод: num = 9996
Вывод: 9999

Решение задачи
👍5
Выход из лабиринта

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

Условие задачи: на вход подается двумерный массив, отражающий карту лабиринта ('.' - пустая ячейка, ' + ' - стена). Также на вход подается массив со входом, обозначающий изначальное положение, откуда будет искаться выход.

Двигаться можно лишь в четырёх направлениях: лево, право, верх, низ.

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

Пример:

Ввод:
maze = [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
Вывод: 1
Объяснение: *во вложении

Решение задачи
👍5🔥2
Зигзагообразная обработка текста

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

Условие задачи: строка "PAYPALISHIRING" при разбиении на чтение зигзагом имеет следующий вид.
P A H N
A P L S I I G
Y I R

Необходимо, используя данный шаблон и количество рядов для зигзага, преобразовать входную строку к данному выводу. То есть после трансформации получится строка "PAHNAPLSIIGYIR".

Пример:

Ввод:
s = "PAYPALISHIRING", numRows = 3
Вывод: "PAHNAPLSIIGYIR"

Ввод: s = "PAYPALISHIRING", numRows = 4
Вывод:
Объяснение:
P
I N
A L S I G
Y A H R
P I

Решение задачи
👍3
Make the string great AGAIN

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

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

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

Вернуть надо строку, над которой были совершены все преобразования. Гарантируется уникальность ответа.

Пустая строка по умолчанию является качественной.

Пример:

Ввод:
s = "leEeetcode"
Вывод:
"leetcode"

Решение задачи
👍7
Текущая длительность котировок

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

Условие задачи: разработайте алгоритм, который сохраняет котировки некоторой акции текущего дня и осуществляет подсчёт, сколько дней до этого стоимость бумаг была меньше или равна цена на текущий день (включая текущий день).

Пример:

Ввод:
["StockSpanner", "next", "next", "next", "next", "next", "next", "next"]
[[], [100], [80], [60], [70], [60], [75], [85]]
Вывод: [null, 1, 1, 1, 2, 1, 4, 6]

Объяснение:
StockSpanner stockSpanner = new StockSpanner();
stockSpanner.next(100); // return 1
stockSpanner.next(80); // return 1
stockSpanner.next(60); // return 1
stockSpanner.next(70); // return 2
stockSpanner.next(60); // return 1
stockSpanner.next(75); // return 4, так как цены за четыре предыдущих дня (включая сегодняшний) были меньше или равны;
stockSpanner.next(85); // return 6

Решение задачи
👍7
Замена элемента на правый максимум

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

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

Пример:

Ввод:
arr = [17,18,5,4,6,1]
Вывод: [18,6,6,6,1,-1]

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

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

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

Пример:

Ввод:
target = 7, nums = [2,3,1,2,4,3]
Вывод: 2
Объяснение: сумма в подмассиве [4,3] равна цели - 7


Решение задачи
👍1🔥1
Калькулятор II

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

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

Целочисленное деление округляет число в сторону нуля.

Нельзя пользоваться встроенными функциями.

Пример:

Ввод:
s = "3+2*2"
Вывод: 7

Ввод: s = " 3/2 "
Вывод: 1

Решение задачи
👍51
Произведение подмассива меньше  K

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

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

Пример:

Ввод:
nums = [10,5,2,6], k = 100
Вывод:
8
Объяснение:
[10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6]

Решение задачи
👍61
Избыточность соединения

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

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

Узлы графа соединены между собой и отражаются списком соединения edges[i] = [ai, bi].

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

Необходимо вывести ребро, которое можно удалить без потери информации.

Пример:

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


Решение задачи
👍5
Последний из камней

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

Условие задачи: на вход подается массив из камней, где i-ый элемент обозначает вес соответствующего камня.

Осуществляется игра в камни: берутся два камня с наибольшим весом и сталкиваются. Результат их столкновения может быть следующим:

- оба уничтожаются при условии одинакового веса;
- при условии неравенства весов из веса большего вычитается меньший вес, а после снова добавляется в массив.

Игра продолжается до тех пор пока есть хотя бы один камень, необходимо вернуть это самый последний вес. При отсутствии камней в конце - вернуть ноль.

Пример:

Ввод:
stones = [2,7,4,1,8,1]
Вывод: 1

Решение задачи
👍11👎1
Смена операции

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

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

В результате необходимо получить это самое произведение.

Пример:

Ввод:
n = 2
Вывод: 1
Объяснение: 2 = 1 + 1, 1 × 1 = 1.

Ввод: n = 10
Вывод: 36
Объяснение: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36.

Решение задачи
👍4👎1
Игра в угадайку

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

Условие задачи: играем в угадайку по следующей схеме:

Выбирается число от 1 до n. Надо отгадать загаданное число. После каждой неудачной попытки говорится больше или меньше заданное число.

Надо реализовать API:

-1: загаданное число больше выбранного;
1: загаданное число меньше выбранного;
0: загаданное число и выбранное совпали.

Необходимо вернуть загаданное число.

Пример:

Ввод:
n = 10, pick = 6
Вывод: 6

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