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

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

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

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

№4974320675
Download Telegram
Избыточность соединения

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

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

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

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

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

Пример:

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


Решение задачи
👍21
Количество изолированных островов

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

Условие задачи: дан двумерный массив, содержащий 0 (острова) и 1(воду).

Остров - множество нулей, соединенных в четырех направлениях (справа, снизу, слева, сверху), изолированый остров - множество нулей, окруженных со всех сторон единицами.

Надо посчитать количество изолированных островов.

Пример:

Ввод:
grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
Вывод:
2
Объяснение:

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

Решение задачи
Сводные диапазоны

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

Условие задачи: дается массив из уникальных целых чисел цисел. Срез [a,b] - включает в себя множество значений из данного отрезка включительно.

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

• "a->b" if a != b
• "a" if a == b

Пример:

Ввод:
nums = [0,1,2,4,5,7]
Вывод:
["0->2","4->5","7"]

Объяснение:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

Ввод:
nums = [0,2,3,4,6,8,9]
Вывод:
["0","2->4","6","8->9"]

Решение задачи
👍3
Змейка из машин

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

Условие задачи: есть n машин, направляющихся в одно и то же место на расстоянии target по однополосной дороге.

Дается два целочисленных массива длины n, в первом хранится положение, а во втором скорость соответствующей машины.

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

Змейка из машин - группа нескольких или одной машины, достигающих одновременно целевого пункта (расстояние между машинами в одной змейке не учитывается).

Необходимо вычислить количество таких змеек.

Пример:

Ввод: target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
Вывод: 3
Объяснение:

Ввод:
target = 10, position = [3], speed = [3]
Вывод: 1

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

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

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

Пример:

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


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

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

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

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

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

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

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

Пример:

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

Решение задачи
👍3
Раскладка костей

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

Условие задачи: есть два типа костей: типа domino и типа tromino.

Дается целое число n, необходимо вычислить количество комбинаций чтобы выложить поле размером 2 x n при помощи двух типов костей.

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

Пример:

Ввод:
n = 3
Вывод: 5
Объяснение: *во вложении

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

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

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

Пример:

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

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

Решение задачи
👍1
Очередь через стак

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

Условие задачи: необходимо реализовать очередь, используя лишь два стака. Созданная очередь, должна поддерживать все операции, что и обычная (push, peek, pop, empty).

- void push(int x): добавление в конец очереди.
- int pop() удаление верхнего элемента из очереди и возврат его значения.
- int peek() возврат верхнего значения.
- boolean empty() проверка на наличие элементов в очереди.

Пример:

Ввод:
["MyQueue", "push", "push", "peek", "pop", "empty"]
[[ ], [1], [2], [], [ ], [ ] ]
Вывод: [null, null, null, 1, 1, false]
Объяснение:

MyQueue myQueue = new MyQueue();
myQueue.push(1); // очередь: [1]
myQueue.push(2); // очередь: [1, 2]
myQueue.peek(); // return 1
myQueue.pop(); // return 1, очередь [2]
myQueue.empty(); // return false

Решение задачи
👍4
Максимальная разница между узлом и предком

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

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

Пример:

Ввод:
root = [8,3,10,1,6,null,14,null,null,4,7,13]
Вывод:
7
Объяснение:
некоторые из комбинаций пар потомок-родитель:
|8 - 3| = 5
|3 - 7| = 4
|8 - 1| = 7
|10 - 13| = 3


Ввод:
root = [1,null,2,null,0,3]
Вывод:
3

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

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

Условие задачи: web-разработчикам необходимо знать размеры окна создаваемого приложения. Дается специальная прямоугольная рамка, имеющая размеры L (длина) и W (ширина). На данные габариты накладываются определенные условия:

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

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

Пример:

Ввод:
area = 4
Вывод: [2,2]
Объяснение:

Ввод:
area = 122122
Вывод: [427,286]

Решение задачи
👍31
Бинарный часы

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

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

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

Пример:

Ввод:
turnedOn = 1
Вывод:
["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]
Объяснение:

Ввод:
turnedOn = 9
Вывод:
[ ]

Решение задачи
👍4
Максимальное количество единиц

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

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

Пример:

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

Решение задачи
👍4
Минимальная средняя разница

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

Условие задачи: дается массив из целых чисел.

Средняя разница в индексе i - это абсолютная разница между средним первых i + 1 элементов и последних n - i - 1. Оба средних долдны быть округлены до ближайшего целого в меньшую сторону.

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

Пример:

Ввод:
nums = [2,5,3,9,5,3]
Вывод:
3
Объяснение:
*click


Решение задачи
👍5
Окружение регионов

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

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

Пример:

Ввод:
board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]
Вывод:
[["X","X","X","X"],["X","X","X","X"],["X","X","X","X"],["X","O","X","X"]]

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

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

Условие задачи: строка "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

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

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

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

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

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

Пример:

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

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

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

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

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

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

Пример:

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

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

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

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

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

Пример:

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


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

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

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

Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.

Необходимо разработать алгоритм с временной сложностью менее O(n).

Пример:

Ввод:
root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении

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