K-ый наибольший элемент в массиве
Сложность: Средняя
Условие задачи: дается массив, а также число k. Необходимо вернуть 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Решение задачи
👍3
Проверка соответствия строк в двух списках
Сложность: Лёгкая
Условие задачи: на вход подаются два строковых массива, необходимо вернуть true, если два массива представляют одну и ту же строку, false в противном случае.
Под представлением одной и той же строки подразумевается, что после конкатенации всех фрагментов списков, две полученные строки будут идентичными.
Пример:
Ввод: word1 = ["ab", "c"], word2 = ["a", "bc"]
Вывод: true
Объяснение:
word1: "ab" + "c" -> "abc"
word2: "a" + "bc" -> "abc"
Ввод: word1 = ["a", "cb"], word2 = ["ab", "c"]
Вывод: false
Решение задачи
Сложность: Лёгкая
Условие задачи: на вход подаются два строковых массива, необходимо вернуть true, если два массива представляют одну и ту же строку, false в противном случае.
Под представлением одной и той же строки подразумевается, что после конкатенации всех фрагментов списков, две полученные строки будут идентичными.
Пример:
Ввод: word1 = ["ab", "c"], word2 = ["a", "bc"]
Вывод: true
Объяснение:
word1: "ab" + "c" -> "abc"
word2: "a" + "bc" -> "abc"
Ввод: word1 = ["a", "cb"], word2 = ["ab", "c"]
Вывод: false
Решение задачи
👍2
Где приземлится мяч
Сложность: Средняя
Условие задачи: дается двумерный массив, определяющий короб, а также 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]
Объяснение: мяч уткнется в левую стенку коробки
Решение задачи
Сложность: Средняя
Условие задачи: дается двумерный массив, определяющий короб, а также 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]
Объяснение: мяч уткнется в левую стенку коробки
Решение задачи
👍8
Нахождение первой и последние позиций в отсортированном массиве
Сложность: Средняя
Условие задачи: дается целочисленный массив в порядке не убывания, необходимо найти первую и последнюю позиции целевого элемента, который надо отыскать.
Если целевого элемента нет в массиве, то надо вывести [-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]
Решение задачи
Сложность: Средняя
Условие задачи: дается целочисленный массив в порядке не убывания, необходимо найти первую и последнюю позиции целевого элемента, который надо отыскать.
Если целевого элемента нет в массиве, то надо вывести [-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]
Решение задачи
👍2
Пересечение интервала
Сложность: Средняя
Условие задачи: дается массив из непересекающихся интервалов, где первое число подсписка - начальная координата, а второе число - конечная координата. Также подается новый интервал.
Необходимо внедрить новый интервал в уже существующий список и вернуть полученный результат после вставки.
Пример:
Ввод: 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]]
Решение задачи
Сложность: Средняя
Условие задачи: дается массив из непересекающихся интервалов, где первое число подсписка - начальная координата, а второе число - конечная координата. Также подается новый интервал.
Необходимо внедрить новый интервал в уже существующий список и вернуть полученный результат после вставки.
Пример:
Ввод: 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]]
Решение задачи
👍2
Два огромных океана
Сложность: Средняя
Условие задачи: на вход подается двумерная матрица, которая отображает рельеф острова (чем больше значение в ячейке, тем выше рельеф в текущей точке относительно уровня моря), окруженного двумя океанами: Тихим и Атлантическим.
После того, как прошел бурный дождь по острову начала стекать вода. Жидкость может течь лишь в том направлении, где рельеф в текущей точке не меньше (по значению на решетке), чем рельеф в соседней.
Необходимо выявить точки, из которых дождевая вода может попасть и в Тихий океан и в Атлантический.
Пример:
Ввод: heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]
Вывод: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается двумерная матрица, которая отображает рельеф острова (чем больше значение в ячейке, тем выше рельеф в текущей точке относительно уровня моря), окруженного двумя океанами: Тихим и Атлантическим.
После того, как прошел бурный дождь по острову начала стекать вода. Жидкость может течь лишь в том направлении, где рельеф в текущей точке не меньше (по значению на решетке), чем рельеф в соседней.
Необходимо выявить точки, из которых дождевая вода может попасть и в Тихий океан и в Атлантический.
Пример:
Ввод: heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]
Вывод: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]
Объяснение: *во вложении
Решение задачи
👍3
Бинарное дерево с правой стороны
Сложность: Средняя
Условие задачи: на вход подается бинарное дерево, представим, что стоим справа, необходимо вывезти значения, которые будут видны с этой стороны.
Пример:
Ввод: root = [1,2,3,null,5,null,4]
Вывод: [1,3,4]
Объяснение: * во вложении
Ввод: root = [1,null,3]
Вывод: [1, 3]
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается бинарное дерево, представим, что стоим справа, необходимо вывезти значения, которые будут видны с этой стороны.
Пример:
Ввод: root = [1,2,3,null,5,null,4]
Вывод: [1,3,4]
Объяснение: * во вложении
Ввод: root = [1,null,3]
Вывод: [1, 3]
Решение задачи
👍5
Префиксное дерево
Сложность: Средняя
Условие задачи: префиксное дерево - это структура данных для эффективного хранения и извлечения ключей в массиве строк.
Необходимо реализовать класс со следующими методами:
- 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
Решение задачи
Сложность: Средняя
Условие задачи: префиксное дерево - это структура данных для эффективного хранения и извлечения ключей в массиве строк.
Необходимо реализовать класс со следующими методами:
- 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
Решение задачи
👍2
Длина последнего слова
Сложность: Лёгкая
Условие задачи: на вход подается строка, состоящая из пробелов и слов. Необходимо посчитать длину последнего слова в строке.
Пример:
Ввод: s = "Hello World"
Вывод: 5
Объяснение: слово "World" имеет длину 5.
Ввод: s = " fly me to the moon "
Вывод: 4
Решение задачи
Сложность: Лёгкая
Условие задачи: на вход подается строка, состоящая из пробелов и слов. Необходимо посчитать длину последнего слова в строке.
Пример:
Ввод: s = "Hello World"
Вывод: 5
Объяснение: слово "World" имеет длину 5.
Ввод: s = " fly me to the moon "
Вывод: 4
Решение задачи
👍5❤2🔥2
Площадь прямоугольников
Сложность: Средняя
Условие задачи: на вход подаются координаты двух прямоугольников (левый нижний угол, а также правый верхний угол).
Необходимо вычислить суммарную площадь, занимаемую двумя прямоугольниками.
Пример:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: на вход подаются координаты двух прямоугольников (левый нижний угол, а также правый верхний угол).
Необходимо вычислить суммарную площадь, занимаемую двумя прямоугольниками.
Пример:
Ввод:
ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2Вывод:
45Решение задачи
👍8
Подсчет узлов бинарного дерева
Сложность: Средняя
Условие задачи: дается корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.
Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.
Необходимо разработать алгоритм с временной сложностью менее O(n).
Пример:
Ввод: root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: дается корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.
Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.
Необходимо разработать алгоритм с временной сложностью менее O(n).
Пример:
Ввод: root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении
Решение задачи
👍5🔥2
Комбинация сумм 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]
]
Решение задачи
Сложность: Средняя
Условие задачи: на вход дается список возможных кандидатов и целевое значение суммы, необходимо вывести все комбинации, которыми можно получить целевое значение.
Каждое число из списка кандидатов должно содержаться в конечном подсписке из ответов ровно один раз.
Результирующий ответ не должен содержать в себе дубликатов.
Пример:
Ввод: 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» также будет правильным ответом.
Решение задачи
Сложность задачи: Средняя
Условие задачи:
Строка 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» также будет правильным ответом.
Решение задачи
👍8❤2🎉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
Решение задачи
Сложность: Средняя
Условие задачи: напишите эффективный алгоритм для поиска наличия нужного числа в двумерной матрице, которая имеет следующие свойства:
- в строке элементы отсортированы по возрастанию (слева - направо);
- в столбце элементы отсортированы по возрастанию (снизу - вверх).
Пример:
Ввод: 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
Решение задачи
👍8❤1🔥1🎉1
Число-палиндром
Условие задачи:
Получив целое число x, вернуть true, если x является палиндромом. Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном порядке.
Примеры:
Ввод: х = 121
Вывод: true
Объяснение: 121 читается как 121 слева направо и справа налево.
Ввод: х = -121
Вывод: false
Объяснение: Слева направо это -121. Справа налево получается 121-. Следовательно, это не палиндром.
Ввод: х = 10
Вывод: false
Решение задачи
Условие задачи:
Получив целое число x, вернуть true, если x является палиндромом. Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном порядке.
Примеры:
Ввод: х = 121
Вывод: true
Объяснение: 121 читается как 121 слева направо и справа налево.
Ввод: х = -121
Вывод: false
Объяснение: Слева направо это -121. Справа налево получается 121-. Следовательно, это не палиндром.
Ввод: х = 10
Вывод: false
Решение задачи
👍10
Прибавка единицы
Сложность: Лёгкая
Условие задачи: на вход подаётся массив из цифр, где на i-ой позиции в массиве находится i-ая цифра в числе.
Необходимо добавить к данному числу единицу и вывести получившийся результат аналогично по цифрам.
Пример:
Ввод: digits = [‘1’, ‘2’, ‘3’]
Вывод: [‘1’, ‘2’, ‘4’]
Решение задачи
Сложность: Лёгкая
Условие задачи: на вход подаётся массив из цифр, где на i-ой позиции в массиве находится i-ая цифра в числе.
Необходимо добавить к данному числу единицу и вывести получившийся результат аналогично по цифрам.
Пример:
Ввод: digits = [‘1’, ‘2’, ‘3’]
Вывод: [‘1’, ‘2’, ‘4’]
Решение задачи
👍9❤2👎1🎉1
Перенос указателя вправо
Сложность: Средняя
Условие задачи: дается бинарное дерево, необходимо перенести каждый указатель на следующий узел на соответствующий правый правый элемент на текущем уровне либо же передать указатель на NULL в случае отсутствия узла.
Пример:
Ввод:
Вывод:
Сложность: Средняя
Условие задачи: дается бинарное дерево, необходимо перенести каждый указатель на следующий узел на соответствующий правый правый элемент на текущем уровне либо же передать указатель на 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
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается массив из чисел, необходимо вычислить максимальное произведение, которое встречается в подмассиве исходного массива.
Подмассив - последовательный кусок исходного массива.
Пример:
Ввод: 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
Решение задачи
Сложность: Средняя
Условие задачи: вершина списка - элемент, который больше как соседа слева, так и соседа справа.
Дается целочисленный массив (проиндексированный с 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
Решение задачи
Сложность: Лёгкая
Условие задачи: дается число, полностью состоящее из 6 и 9. Необходимо вычислить наибольшее число в данной раскладке, при этом имея возможность заменить не более одной шестерки на девятку.
Пример:
Ввод: num = 9669
Вывод: 9969
Ввод: num = 9996
Вывод: 9999
Решение задачи
👍5
Выход из лабиринта
Сложность: Средняя
Условие задачи: на вход подается двумерный массив, отражающий карту лабиринта ('.' - пустая ячейка, ' + ' - стена). Также на вход подается массив со входом, обозначающий изначальное положение, откуда будет искаться выход.
Двигаться можно лишь в четырёх направлениях: лево, право, верх, низ.
Необходимо вычислить количество шагов до ближайшего выхода или же вернуть -1 в случае отсутствия такового.
Пример:
Ввод: maze = [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
Вывод: 1
Объяснение: *во вложении
Решение задачи
Сложность: Средняя
Условие задачи: на вход подается двумерный массив, отражающий карту лабиринта ('.' - пустая ячейка, ' + ' - стена). Также на вход подается массив со входом, обозначающий изначальное положение, откуда будет искаться выход.
Двигаться можно лишь в четырёх направлениях: лево, право, верх, низ.
Необходимо вычислить количество шагов до ближайшего выхода или же вернуть -1 в случае отсутствия такового.
Пример:
Ввод: maze = [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
Вывод: 1
Объяснение: *во вложении
Решение задачи
👍5🔥2