Подсчет уникальных символов всех подстрок заданной строки
Сложность задачи: Трудная
Условие задачи:
Давайте определим функцию countUniqueChars(s), которая возвращает количество уникальных символов в s.
Например, вызов countUniqueChars(s), если s = "LEETCODE", тогда "L", "T", "C", "O", "D" являются уникальными символами, поскольку они появляются только один раз в s, поэтому countUniqueChars(s ) = 5.
Для строки s вернуть сумму countUniqueChars(t), где t — подстрока s. Тестовые примеры генерируются таким образом, чтобы ответ помещался в 32-битное целое число.
Обратите внимание, что некоторые подстроки могут повторяться, поэтому в этом случае вам также придется считать повторяющиеся.
Строка s состоит только из заглавных английских букв.
Пример:
Ввод:
Все возможные подстроки: «A», «B», «C», «AB», «BC» и «ABC».
Каждая подстрока состоит только из уникальных букв.
Сумма длин всех подстрок равна 1 + 1 + 1 + 2 + 2 + 3 = 10
Ввод:
Сложность задачи: Трудная
Условие задачи:
Давайте определим функцию countUniqueChars(s), которая возвращает количество уникальных символов в s.
Например, вызов countUniqueChars(s), если s = "LEETCODE", тогда "L", "T", "C", "O", "D" являются уникальными символами, поскольку они появляются только один раз в s, поэтому countUniqueChars(s ) = 5.
Для строки s вернуть сумму countUniqueChars(t), где t — подстрока s. Тестовые примеры генерируются таким образом, чтобы ответ помещался в 32-битное целое число.
Обратите внимание, что некоторые подстроки могут повторяться, поэтому в этом случае вам также придется считать повторяющиеся.
Строка s состоит только из заглавных английских букв.
Пример:
Ввод:
s = "ABC"
Вывод: 10
Объяснение: Все возможные подстроки: «A», «B», «C», «AB», «BC» и «ABC».
Каждая подстрока состоит только из уникальных букв.
Сумма длин всех подстрок равна 1 + 1 + 1 + 2 + 2 + 3 = 10
Ввод:
s = "ABA"
Вывод: 8
Решение задачи👍13
Search Suggestions System
Сложность задачи: Средняя
Условие задачи:
Вам дан массив строк продуктов и строка searchWord.
Разработайте систему, которая предлагает не более трех названий продуктов из продуктов после ввода каждого символа searchWord. Предлагаемые продукты должны иметь общий префикс с searchWord. Если имеется более трех продуктов с общим префиксом, верните три лексикографически минимальных продукта.
Верните список списков предлагаемых продуктов после ввода каждого символа searchWord.
Пример:
Ввод:
После ввода m и mo все продукты совпадают, и мы показываем пользователю ["mobile", "moneypot", "monitor"]
После ввода mou, mous и mouse система предлагает ["mouse","mousepad"].
Ввод:
Сложность задачи: Средняя
Условие задачи:
Вам дан массив строк продуктов и строка searchWord.
Разработайте систему, которая предлагает не более трех названий продуктов из продуктов после ввода каждого символа searchWord. Предлагаемые продукты должны иметь общий префикс с searchWord. Если имеется более трех продуктов с общим префиксом, верните три лексикографически минимальных продукта.
Верните список списков предлагаемых продуктов после ввода каждого символа searchWord.
Пример:
Ввод:
products = ["mobile","mouse","moneypot","monitor","mousepad"], searchWord = "mouse"
Вывод: [
["mobile","moneypot","monitor"],
["mobile","moneypot","monitor"],
["mouse","mousepad"],
["mouse","mousepad"],
["mouse","mousepad"]
]
Объяснение: продукты, отсортированные лексикографически = ["mobile","moneypot","monitor","mouse","mousepad"]После ввода m и mo все продукты совпадают, и мы показываем пользователю ["mobile", "moneypot", "monitor"]
После ввода mou, mous и mouse система предлагает ["mouse","mousepad"].
Ввод:
products = ["havana"], searchWord = "havana"
Вывод: [["havana"],["havana"],["havana"],["havana"],["havana"],["havana"]]
Решение задачи👍7❤1
Знак произведения массива
Сложность задачи: Легкая
Условие задачи:
Существует функция
1, если x положительно
-1, если x отрицательно
0, если x равно 0.
Вам дается целочисленный массив
Пример:
Ввод:
Ввод:
Сложность задачи: Легкая
Условие задачи:
Существует функция
signFunc(x), которая возвращает:1, если x положительно
-1, если x отрицательно
0, если x равно 0.
Вам дается целочисленный массив
nums. Пусть product - это произведение всех значений в массиве nums. Верните signFunc(product).Пример:
Ввод:
nums = [-1,-2,-3,-4,3,2,1]
Вывод: 1
Объяснение: Произведение всех значений в массиве равно 144, а signFunc(144) = 1.Ввод:
nums = [1,5,0,2,-3]
Вывод: 0
Решение задачи👍16
LeetCode Community
Весовая сумма списка Частота встречи задач на собеседованиях за последние шесть месяцев: Facebook* — 88, LinkedIn — 36, Amazon — 5 Условие задачи: Вам предоставлен вложенный список целых чисел NestedList. Каждый элемент представляет собой либо целое число…
Весовая сумма списка 2
Сложность задачи: Средняя
Условие задачи:
Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.
Глубина целого числа — это количество списков, внутри которых оно находится. Например, во вложенном списке [1,[2,2],[[3],2],1] каждому целочисленному значению соответствует его глубина. Пусть maxDepth будет максимальной глубиной любого целого числа. Вес целого числа равен maxDepth - (глубина целого числа) + 1.
Верните сумму каждого целого числа во вложенном списке, умноженную на его вес.
Значения целых чисел во вложенном списке находятся в диапазоне [-100, 100].
Максимальная глубина любого целого числа меньше или равна 50.
Пример:
Ввод:
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8
Ввод:
Сложность задачи: Средняя
Условие задачи:
Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.
Глубина целого числа — это количество списков, внутри которых оно находится. Например, во вложенном списке [1,[2,2],[[3],2],1] каждому целочисленному значению соответствует его глубина. Пусть maxDepth будет максимальной глубиной любого целого числа. Вес целого числа равен maxDepth - (глубина целого числа) + 1.
Верните сумму каждого целого числа во вложенном списке, умноженную на его вес.
Значения целых чисел во вложенном списке находятся в диапазоне [-100, 100].
Максимальная глубина любого целого числа меньше или равна 50.
Пример:
Ввод:
nestedList = [[1,1],2,[1,1]]
Вывод: 8
Объяснение: Четыре единицы с весом 1, одна двойка с весом 2.1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8
Ввод:
nestedList = [1,[4,[6]]]
Вывод: 17
Решение задачи👍14
Умножение строк
Сложность задачи: Средняя
Условие задачи:
Даны два неотрицательных целых числа num1 и num2, представленные в виде строк, вернуть произведение num1 и num2, также представленное в виде строки.
Примечание. Вы не должны использовать какую-либо встроенную библиотеку BigInteger или напрямую преобразовывать входные данные в целое число.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Даны два неотрицательных целых числа num1 и num2, представленные в виде строк, вернуть произведение num1 и num2, также представленное в виде строки.
Примечание. Вы не должны использовать какую-либо встроенную библиотеку BigInteger или напрямую преобразовывать входные данные в целое число.
Пример:
Ввод:
num1 = "2", num2 = "3"
Вывод: "6"
Ввод: num1 = "123", num2 = "456"
Вывод: "56088"
Решение задачи👍14
Расписание курсов
Сложность задачи: Средняя
Условие задачи:
Всего вам нужно пройти numCourses курсов, помеченных от 0 до numCourses - 1. Вам дан массив предварительных условий, где Prepreses[i] = [ai, bi] указывает, что вы должны сначала пройти курс bi, если хотите пройти конечно ai.
Например, пара [0, 1] указывает, что для прохождения курса 0 вы должны сначала пройти курс 1.
Верните true, если вы можете закончить все курсы. В противном случае вернуть ложь.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Всего вам нужно пройти numCourses курсов, помеченных от 0 до numCourses - 1. Вам дан массив предварительных условий, где Prepreses[i] = [ai, bi] указывает, что вы должны сначала пройти курс bi, если хотите пройти конечно ai.
Например, пара [0, 1] указывает, что для прохождения курса 0 вы должны сначала пройти курс 1.
Верните true, если вы можете закончить все курсы. В противном случае вернуть ложь.
Пример:
Ввод:
numCourses = 2, prerequisites = [[1,0]]
Вывод: true
Объяснение: Всего нужно пройти 2 курса. Чтобы пройти курс 1, вы должны пройти курс 0. Так что это возможно.Ввод:
numCourses = 2, prerequisites = [[1,0],[0,1]]
Вывод: false
Решение задачи👍9🤔1
Word break
Сложность задачи: Средняя
Условие задачи:
Для заданной строки s и словаря строк wordDict вернуть true, если s можно разделить на последовательность из одного или нескольких словарных слов, разделенных пробелами.
Обратите внимание, что одно и то же слово в словаре может многократно использоваться при сегментации.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Для заданной строки s и словаря строк wordDict вернуть true, если s можно разделить на последовательность из одного или нескольких словарных слов, разделенных пробелами.
Обратите внимание, что одно и то же слово в словаре может многократно использоваться при сегментации.
Пример:
Ввод:
s = "leetcode", wordDict = ["leet","code"]
Вывод: true
Объяснение: Вернет true, потому что "leetcode" может быть сегментирован как "leet code"Ввод:
s = "applepenapple", wordDict = ["apple","pen"]
Вывод: true
Решение задачи👍8
Оцените обратную польскую нотацию
Сложность задачи: Средняя
Условие задачи:
Оцените значение арифметического выражения в обратной польской записи. Допустимые операторы +, -, * и /. Каждый операнд может быть целым числом или другим выражением. Обратите внимание, что деление между двумя целыми числами должно усекаться до нуля.
Гарантируется, что заданное выражение RPN всегда допустимо. Это означает, что выражение всегда будет возвращать результат, и операции деления на ноль не будет.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Оцените значение арифметического выражения в обратной польской записи. Допустимые операторы +, -, * и /. Каждый операнд может быть целым числом или другим выражением. Обратите внимание, что деление между двумя целыми числами должно усекаться до нуля.
Гарантируется, что заданное выражение RPN всегда допустимо. Это означает, что выражение всегда будет возвращать результат, и операции деления на ноль не будет.
Пример:
Ввод:
tokens = ["2","1","+","3","*"]
Вывод: 9
Объяснение: ((2 + 1) * 3) = 9Ввод:
tokens = ["4","13","5","/","+"]
Вывод: 6
Решение задачи👍10
Строки отличающиеся на один символ
Сложность задачи: Средняя
Условие задачи:
Дан список строк dict, где все строки имеют одинаковую длину.
Верните true, если в одном и том же индексе есть 2 строки, которые отличаются только на 1 символ, в противном случае возвращает false.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дан список строк dict, где все строки имеют одинаковую длину.
Верните true, если в одном и том же индексе есть 2 строки, которые отличаются только на 1 символ, в противном случае возвращает false.
Пример:
Ввод:
dict = ["abcd","acbd", "aacd"]
Вывод: true
Объяснение: Строки "abcd" и "aacd" отличаются только одним символом в индексе 1.Ввод:
dict = ["ab","cd","yz"]
Вывод: false
Решение задачи👍9
Одно редактирование
Сложность задачи: Средняя
Условие задачи:
Даны две строки s и t. Требуется вернуть true, если обе они находятся на расстоянии редактирования друг от друга, в противном случае вернуть false.
Говорят, что строка s находится на расстоянии редактирования от строки t, если вы можете:
• Вставить ровно один символ в s, чтобы получить t.
• Удалить ровно один символ из s, чтобы получить t.
• Заменить ровно один символ s другим символом, чтобы получить t.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Даны две строки s и t. Требуется вернуть true, если обе они находятся на расстоянии редактирования друг от друга, в противном случае вернуть false.
Говорят, что строка s находится на расстоянии редактирования от строки t, если вы можете:
• Вставить ровно один символ в s, чтобы получить t.
• Удалить ровно один символ из s, чтобы получить t.
• Заменить ровно один символ s другим символом, чтобы получить t.
Пример:
Ввод:
s = "ab", t = "acb"
Вывод: true
Объяснение: Мы можем вставить 'c' в s, чтобы получить t.Ввод:
s = "", t = ""
Вывод: false
Решение задачи👍10
Целое число английскими словами
Сложность задачи: Трудная
Условие задачи:
Преобразуйте неотрицательное целое число num в его представление английскими словами.
Пример:
Ввод:
Сложность задачи: Трудная
Условие задачи:
Преобразуйте неотрицательное целое число num в его представление английскими словами.
Пример:
Ввод:
num = 123
Вывод: "One Hundred Twenty Three"
Ввод: num = 12345
Вывод: "Twelve Thousand Three Hundred Forty Five"
Решение задачи👍15🤔2👎1
То же дерево
Сложность задачи:
Низкая
Условие:
Получив корни двух бинарных деревьев p и q, напишите функцию, проверяющую, совпадают ли они.
Два бинарных дерева считаются одинаковыми, если они структурно идентичны, а узлы имеют одинаковое значение.
Примеры (картинки по порядку):
Ввод: p = [1,2,3], q = [1,2,3]
Вывод: true
Ввод: p = [1,2], q = [1,null,2]
Вывод: false
Ввод: p = [1,2,1], q = [1,1,2]
Вывод: false
Ограничения:
Количество узлов в обоих деревьях находится в диапазоне [0, 100].
Решение задачи
Сложность задачи:
Низкая
Условие:
Получив корни двух бинарных деревьев p и q, напишите функцию, проверяющую, совпадают ли они.
Два бинарных дерева считаются одинаковыми, если они структурно идентичны, а узлы имеют одинаковое значение.
Примеры (картинки по порядку):
Ввод: p = [1,2,3], q = [1,2,3]
Вывод: true
Ввод: p = [1,2], q = [1,null,2]
Вывод: false
Ввод: p = [1,2,1], q = [1,1,2]
Вывод: false
Ограничения:
Количество узлов в обоих деревьях находится в диапазоне [0, 100].
Решение задачи
👍7
Pow(x, n)
Сложность задачи: Средняя
Условие задачи:
Реализуйте функцию pow(x, n), которая вычисляет x в степени n (т. е. x^n).
Пример:
Ввод: x = 2.00000, n = 10
Вывод:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= x^n <= 104
Решение задачи
Сложность задачи: Средняя
Условие задачи:
Реализуйте функцию pow(x, n), которая вычисляет x в степени n (т. е. x^n).
Пример:
Ввод: x = 2.00000, n = 10
Вывод:
1024.00000
Ввод: x = 2.10000, n = 3
Вывод: 9.26100
Диапазон данных:-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= x^n <= 104
Решение задачи
👍12🤔2
Jump Game II
Сложность задачи: средняя
Условие:
Получив массив неотрицательных целых чисел nums, вы изначально позиционируетесь в первом индексе массива. Каждый элемент массива представляет максимальную длину прыжка в этой позиции. Ваша цель - достичь последнего индекса за минимальное количество прыжков. Вы можете предположить, что вы всегда можете добраться до последнего индекса.
Примеры:
Ввод: nums = [2,3,1,1,4]
Вывод: 2
Объяснение: Минимальное количество переходов для достижения последнего индекса равно 2. Перейти на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.
Ввод: nums = [2,3,0,1,4]
Вывод: 2
Решение задачи
Сложность задачи: средняя
Условие:
Получив массив неотрицательных целых чисел nums, вы изначально позиционируетесь в первом индексе массива. Каждый элемент массива представляет максимальную длину прыжка в этой позиции. Ваша цель - достичь последнего индекса за минимальное количество прыжков. Вы можете предположить, что вы всегда можете добраться до последнего индекса.
Примеры:
Ввод: nums = [2,3,1,1,4]
Вывод: 2
Объяснение: Минимальное количество переходов для достижения последнего индекса равно 2. Перейти на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.
Ввод: nums = [2,3,0,1,4]
Вывод: 2
Решение задачи
👍8👎2
Друзья, мы решили запустить соревнование по решению задачек с нашего любимого с вами сайта Leetcode.
В чем заключается суть состязания.
После выхода задачки на канале, у каждого из вас есть ровно 3 дня, чтобы попытаться сдать эту самую задачу на сайте, после чего прислать в комментарии результат проверки. Чем лучше будет ваш результат, тем больше баллов вы получите. Над системой получения баллов мы еще думаем, поэтому если у вас есть предложения, будем рады их видеть в комментариях.
В чем заключается суть состязания.
После выхода задачки на канале, у каждого из вас есть ровно 3 дня, чтобы попытаться сдать эту самую задачу на сайте, после чего прислать в комментарии результат проверки. Чем лучше будет ваш результат, тем больше баллов вы получите. Над системой получения баллов мы еще думаем, поэтому если у вас есть предложения, будем рады их видеть в комментариях.
👍31
Перестановки
Сложность задачи: Средняя
Условие задачи:
Дан массив nums различных целых чисел. Требуется вернуть все возможные перестановки. Вы можете вернуть ответ в любом порядке.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дан массив nums различных целых чисел. Требуется вернуть все возможные перестановки. Вы можете вернуть ответ в любом порядке.
Пример:
Ввод:
nums = [1,2,3]
Вывод: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Ввод: nums = [0,1]
Вывод: [[0,1],[1,0]]
Решение задачи👍10
Doodle Jump
Сложность задачи: Средняя
Условие задачи:
Вам дан целочисленный массив nums. Изначально вы находитесь в первом индексе массива, и каждый элемент массива представляет максимальную длину прыжка в этой позиции.
Верните true, если вы можете добраться до последнего индекса, или false в противном случае.
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Вам дан целочисленный массив nums. Изначально вы находитесь в первом индексе массива, и каждый элемент массива представляет максимальную длину прыжка в этой позиции.
Верните true, если вы можете добраться до последнего индекса, или false в противном случае.
Пример:
Ввод:
nums = [1,3,1,1,4]
Вывод: true
Объяснение: Переходим на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.Ввод:
nums = [3,2,1,0,4]
Вывод: false
Решение задачи👍9
Палиндромная перестановка II
Сложность задачи: Средняя
Условие задачи:
Дана строка s. Требуется вернуть все ее палиндромные перестановки (без дубликатов).
Вы можете вернуть ответ в любом порядке. Если s не имеет палиндромной перестановки, вернуть пустой список.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дана строка s. Требуется вернуть все ее палиндромные перестановки (без дубликатов).
Вы можете вернуть ответ в любом порядке. Если s не имеет палиндромной перестановки, вернуть пустой список.
Пример:
Ввод:
s = "aabb"
Вывод: ["abba","baab"]
Ввод: s = "abc"
Вывод: []
Решение задачи👍7🤔1
Валидный судоку
Сложность: средняя
Условие:
Определите, валидна ли доска судоку 9 x 9. Только заполненные ячейки должны быть проверены в соответствии со следующими правилами:
1. Каждая строка должна содержать цифры 1–9 без повторения.
2. Каждый столбец должен содержать цифры 1–9 без повторения.
3. Каждый из девяти подблоков сетки 3 x 3 должен содержать цифры 1–9 без повторения.
Доска судоку (частично заполненная) может быть валидной, но не обязательно решаемой. Только заполненные ячейки должны быть проверены в соответствии с указанными правилами.
Примеры:
Пример 1 (на картинке):
Ввод: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Вывод: true
Пример 2:
Ввод: board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Вывод: false
Объяснение: то же, что и в примере 1, за исключением того, что цифра 5 в верхнем левом углу изменена на 8. Поскольку в верхнем левом подблоке 3x3 есть две восьмерки, это неверно.
Решение задачи
Сложность: средняя
Условие:
Определите, валидна ли доска судоку 9 x 9. Только заполненные ячейки должны быть проверены в соответствии со следующими правилами:
1. Каждая строка должна содержать цифры 1–9 без повторения.
2. Каждый столбец должен содержать цифры 1–9 без повторения.
3. Каждый из девяти подблоков сетки 3 x 3 должен содержать цифры 1–9 без повторения.
Доска судоку (частично заполненная) может быть валидной, но не обязательно решаемой. Только заполненные ячейки должны быть проверены в соответствии с указанными правилами.
Примеры:
Пример 1 (на картинке):
Ввод: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Вывод: true
Пример 2:
Ввод: board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Вывод: false
Объяснение: то же, что и в примере 1, за исключением того, что цифра 5 в верхнем левом углу изменена на 8. Поскольку в верхнем левом подблоке 3x3 есть две восьмерки, это неверно.
Решение задачи
👍17👎1