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
Конструирование прямоугольника

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

Условие задачи: 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
Площадь прямоугольников

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

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

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

Пример:

Ввод:
ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
Вывод:
45

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

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

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

Необходимо реализовать класс со следующими методами:

- Trie() - инициализатор;
-
void insert(String word) - осуществляет вставку в экземпляр класса;
- boolean search(String word) - возвращает флаг о наличии слова word в дереве;
- boolean startsWith(String prefix) - возвращает флаг о том, начинается ли слово, вставленное на предыдущем шаге с prefix.

Пример:

Ввод:
["Trie", "insert", "search", "search", "startsWith", "insert", "search"]
[[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]

Вывод: [null, null, true, false, true, null, true]

Объяснение:
Trie trie = new Trie();
trie.insert("apple");
trie.search("apple"); // return True
trie.search("app"); // return False
trie.startsWith("app"); // return True
trie.insert("app");
trie.search("app"); // return True

Решение задачи
👍61
Бинарное дерево с правой стороны

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

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

Пример:

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

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

Решение задачи
👍5
Пересечение интервала

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

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

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

Пример:

Ввод:
intervals = [[1,3],[6,9]], newInterval = [2,5]
Вывод:
[[1,5],[6,9]]

Ввод: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Вывод: [[1,2],[3,10],[12,16]]

Решение задачи
👍5
Нахождение первой и последние позиций в отсортированном массиве

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

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

Если целевого элемента нет в массиве, то надо вывести [-1; 1].

Алгоритм должен быть не медленнее, чем O(log n) по времени.

Пример:

Ввод:
nums = [5,7,7,8,8,10], target = 8
Вывод: [3,4]
Объяснение:

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

Решение задачи
👍3
Где приземлится мяч

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

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

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

- Перегородка ячейки типа "левый верхний угол —> правый нижний угол" имеет представление 1.
- Перегородка ячейки типа "правый верхний угол —> левый нижний угол" имеет представление -1.

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

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

Пример:

Ввод:
grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]]
Вывод: [1,-1,-1,-1,-1]
Объяснение: *во вложении

Ввод: grid = [[-1]]
Вывод: [-1]
Объяснение: мяч уткнется в левую стенку коробки

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

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

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

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

Пример:

Ввод:
word1 = ["ab", "c"], word2 = ["a", "bc"]
Вывод: true

Объяснение:
word1: "ab" + "c" -> "abc"
word2: "a" + "bc" -> "abc"

Ввод: word1 = ["a", "cb"], word2 = ["ab", "c"]
Вывод: false

Решение задачи
👍71
K-ый наибольший элемент в массиве

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

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

Данный элемент отсчитывается в отсортированном списке, а не по уникальности значений.

Решение должно иметь временную сложность не более O(n).

Пример:

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

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

Решение задачи
👍2
K - ближайших точек к началу координат

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

Условие задачи: дан массив точек на плоскости, характеризующихся соответствующими декартовыми координатами. Также дается число k, которое обозначает количество точек, наиболее близких к началу координат, которые надо вывести. Расстояние измеряется через расстояние Евклида.

Гарантируется уникальность ответа.

Пример:

Ввод:
points = [[1,3],[-2,2]], k = 1
Вывод: [[-2,2]]

Решение задачи
👍2
K-ый наибольший элемент

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

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

Класс содержит следующие методы:

- KthLargest(int k, int[] nums) иниициализирует класс;
- int add(int val) добавляет элемент в спискок и возвращает k-ый наименьший согласно условию.

Пример:

Ввод:
["KthLargest", "add", "add", "add", "add", "add"]
[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]

Вывод:
[null, 4, 5, 5, 8, 8]
Объяснение:

KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]);
kthLargest.add(3); // return 4
kthLargest.add(5); // return 5
kthLargest.add(10); // return 5
kthLargest.add(9); // return 8
kthLargest.add(4); // return 8


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