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
Удаление элементов из связного списка

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

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

Итогом должен быть возврат на начало изменненного списка (все опреции будут производиться непосредственно с самим списком).

Пример:

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

Ввод:
head = [], val = 1
Вывод:
[]

Решение задачи
👍5
Квадраты отсортированного массива

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

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

Пример:

Ввод:
nums = [-4,-1,0,3,10]
Вывод:
[0,1,9,16,100]
Объяснение:
после возведения в квадрат получаем следующий массив - [16,1,0,9,100], а результирующий будет выглядеть следующим образом - 0,1,9,16,100].

Ввод:
nums = [-7,-3,2,3,11]
Вывод:
[4,9,9,49,121]

Решить задачу надо за линейное время.

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

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

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

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

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

Пример:

Ввод:
asteroids = [5,10,-5]
Вывод: [5,10]
Объяснение: 3-ий астероид сталкивается со 2-ым и уничтожается.

Ввод: asteroids = [8,-8]
Вывод: [ ]

Решение задачи
👍1
Наименьший элемент в сдвинутом отсортированном массиве

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

Условие задачи: дан массив длины n, в порядке возрастания. При этом сдвинутый от 1 до n раз.
Например для массива nums = [0,1,2,4,5,6,7] получим:

[4,5,6,7,0,1,2] если сдвинуть 4 раза.
[0,1,2,4,5,6,7] если сдвинуть 7 раз.

Все элементы в массиве уникальные, надо отыскать в нем минимальный.

Решение должно быть за O(log n) по времени.

Пример:

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

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

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

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

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

Пример:

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

Решение задачи
👍3
Схожие деревья

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

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

Два дерева считаются схожими по последним потомкам в случае если последовательность последних потомков и в первом и во втором деревьях идентична.

Пример:

Ввод:
root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
Вывод: true
Объяснение: *во вложении

Решение задачи
👍2
Сцепка бинарного дерева из центрированного и прямого проходов

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

Условие задачи: даны два списка preorder и inorder, где preorder - центрированный порядок дерева (сenter > left > rigth), inorder - прямой проход (left > center > right). Оба - описывают структуру одного дерева, необходимо сконструировать бинарное дерево.

Пример:

Ввод:
preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
Вывод: [3,9,20,null,null,15,7]

Ввод:
preorder = [-1], inorder = [-1]
Вывод: [-1]

Решение задачи
2👍2
Гармоничная подпоследовательность наибольшей длины

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

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

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

Подпоследовательность массива - это последовательность, которая может быть получена из массива путем удаления некоторых элементов или вообще без них без изменения порядка остальных элементов.

Пример:

Ввод:
nums = [1,3,2,2,5,2,3,7]
Вывод: 5
Объяснение: [3,2,2,2,3] - гармоничная подпоследовательность наибольшей длины.

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

Решение задачи
👍21
Заправочная станция

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

Условие задачи: вдоль кольцевого маршрута расположено n заправочных станций, где количество газа на i-й станции равно gas[i].

У вас есть автомобиль с неограниченным запасом бензина, и проезд от i-й станции до следующей (i + 1)-й станции обходится в стоимость [i] бензина. Вы начинаете путешествие с пустым баком на одной из заправочных станций.

Учитывая два целочисленных массива gas и cost, верните индекс начальной заправочной станции, если вы можете объехать круг один раз по часовой стрелке, в противном случае верните -1. Если существует решение, оно гарантированно будет уникальным

Пример:

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

Ввод:
gas = [2,3,4], cost = [3,4,3]
Вывод: -1

Решение задачи
👍2👎1
Распределение конфет

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

Условие задачи: у Алисы есть конфеты, где i-я конфета относится к типу Candytype[i]. Алиса заметила, что начала набирать вес, поэтому обратилась к врачу.

Доктор посоветовал Алисе съесть только n / 2 конфет, которые у нее есть (n всегда четное). Алисе очень нравятся ее конфеты, и она хочет съесть максимальное количество различных видов конфет, все еще следуя советам врача.

Учитывая целочисленный массив candyType длины n, верните максимальное количество различных типов конфет, которые она может съесть, если она съест только n / 2 из них.

Пример:

Ввод:
candyType = [1,1,2,2,3,3]
Вывод: 3
Объяснение: Алиса может съесть только 6/2 = 3 конфеты. Поскольку существует только 3 вида, она может съесть по одному из каждого вида.

Ввод:
piles = [4,3,6,7], k = 3
Вывод: 12

Решение задачи
1👍1
Пацифисты

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

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

Однако баскетбольной команде не разрешается иметь конфликтов. Конфликт возникает, если у младшего игрока строго более высокий балл, чем у старшего игрока. Конфликт не возникает между игроками одного возраста.

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

Пример:

Ввод:
scores = [1,3,5,10,15], ages = [1,2,3,4,5]
Вывод: 34

Ввод: scores = [4,5,6,5], ages = [2,1,2,1]
Вывод: 16

Решение задачи
👍52
Змеи и лестницы

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

Условие задачи: дается доска с целочисленной матрицей n x n, где ячейки помечены от 1 до n2 в стиле бустрофедона, начиная с нижнего левого края доски (т.е. доска [n - 1] [0]) и чередуя направление каждой строки.

Вы начинаете с квадрата 1 на доске. В каждом ходе, начиная с квадратного поворота, выполняйте следующее:

Выберите целевой квадрат рядом с меткой в диапазоне [curr + 1, min(curr + 6, n2)].

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

Верните наименьшее количество ходов, необходимых для достижения квадрата n2. Если добраться до квадрата невозможно, верните значение -1.

Пример:

Ввод:
board = [[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,35,-1,-1,13,-1],[-1,-1,-1,-1,-1,-1],[-1,15,-1,-1,-1,-1]]
Вывод: 4

Ввод: board = [[-1,-1],[-1,3]]
Вывод:
1

Решение задачи
👍32
Максимальное среднее подмассива

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

Условие задачи: дается целочисленный массив nums, состоящий из n элементов и целого числа k.

Найдите непрерывный подмассив, длина которого равна k, который имеет максимальное среднее значение, и верните это значение. Будет принят любой ответ с ошибкой вычисления менее 10-5.

Пример:

Ввод:
nums = [1,12,-5,-6,50,3], k = 4
Вывод: 12.75000
Объяснение:

Ввод:
nums = [5], k = 1
Вывод: 5.00000

Решение задачи
👍6
Наиболее частое слово

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

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

Слова в абзаце не учитывают регистр, и ответ должен быть возвращен в нижнем регистре.

Пример:

Ввод:
paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"]
Вывод: "ball"

Ввод: paragraph = "a.", banned = []
Вывод: "a"

Решение задачи
👍4
Nое число Трибоначчи

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

Условие задачи: последовательность Трибоначчи Tn определяется следующим образом:

T0 = 0, T1 = 1, T2 = 1 и Tn+3 = Tn + Tn+1 + Tn+2 для n >= 0.

По заданному n, верните значение Tn.

Пример:

Ввод:
n = 4
Вывод: 4
Объяснение:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

Решение задачи
👍6
Чужой язык

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

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

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

Пример:

Ввод:
words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
Вывод: true
Объяснение:

Ввод:
words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
Вывод: false

Решение задачи
👍3👎2
Наибольший общий делитель строки

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

Условие задачи: для двух строк s и t мы говорим "t делит s" тогда и только тогда, когда s = t + ... + t (т.е. t объединяется с самим собой один или несколько раз).

Дается две строки str1 и str2, верните самую большую строку x, такую, что x делит как str1, так и str2.

Пример:

Ввод:
str1 = "ABCABC", str2 = "ABC"
Вывод: "ABC"

Ввод: str1 = "ABABAB", str2 = "ABAB"
Вывод: "AB"

Решение задачи
👍4
Считалка

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

Условие задачи: последовательность "Посчитай и скажи" - это последовательность строк цифр, определяемая рекурсивной формулой:

посчитайте и скажите(1) = "1"
countAndSay(n) - это способ, которым вы бы "сказали" строку цифр из countAndSay(n-1), которая затем преобразуется в другую строку цифр.
Чтобы определить, как вы "произносите" строку цифр, разделите ее на минимальное количество подстрок таким образом, чтобы каждая подстрока содержала ровно одну уникальную цифру. Затем для каждой подстроки произнесите количество цифр, затем произнесите цифру. Наконец, объедините каждую указанную цифру.

Например, высказывание и преобразование для цифровой строки "3322251" (*во вложении)

Дается положительное целое число n, верните n-й член последовательности "посчитай и скажи".

Пример:

Ввод:
n = 1
Вывод: "1"

Решение задачи
👍3
Международная азбука Морзе

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

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

"a" соответствует ".-",
"b" соответствует "-...",
"c" соответствует "-.-." и так далее.
Для удобства ниже приведена полная таблица для 26 букв английского алфавита:

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
Дан массив строк words, где каждое слово может быть записано как объединение азбуки Морзе каждой буквы.

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

Пример:

Ввод:
words = ["gin","zen","gig","msg"]
Вывод: 2

Объяснение:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."

Ввод:
words = ["a"]
Вывод: 1

Решение задачи
👍61
Обход по времени

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

Условие задачи: предоставляется сеть из n узлов, помеченных от 1 до n. Вам также дается время, список времени прохождения в соответствии с указаниями ребер times[i] = (ui, vi, wi), где ui - исходный узел, vi - целевой узел, а wi - время, необходимое сигналу для прохождения от источника до цели.

Мы отправим сигнал с заданного узла k. Необходимо вернуть минимальное время, необходимое для приема сигнала всеми n узлами. Если все n узлов не могут принять сигнал, верните значение -1.

Пример:

Ввод:
times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2
Вывод: 2

Ввод: times = [[1,2,1]], n = 2, k = 1
Вывод: 1

Решение задачи
👍31🤔1