Изоморфизм строки
Сложность: Лёгкая
Условие задачи: даны две строки s и t. Просят проверить их на изоморфность.
Две строки считаются изоморфными, если одной букве из одной строки ставится в соответствие уникальная буква из другой строки. Соответствие должно быть уникальным.
Пример:
Ввод:
Объяснение: "e" <--> "t", "g" <--> "d"
Ввод:
Объяснение: "f" <--> "b", "o" <--> "a", "o" <--> "r". Два символа из второй строки соответствуют одному символу из первой строки.
Решение задачи
Сложность: Лёгкая
Условие задачи: даны две строки s и t. Просят проверить их на изоморфность.
Две строки считаются изоморфными, если одной букве из одной строки ставится в соответствие уникальная буква из другой строки. Соответствие должно быть уникальным.
Пример:
Ввод:
s = "egg", t = "add"
Вывод: trueОбъяснение: "e" <--> "t", "g" <--> "d"
Ввод:
s = "foo", t = "bar"
Вывод: falseОбъяснение: "f" <--> "b", "o" <--> "a", "o" <--> "r". Два символа из второй строки соответствуют одному символу из первой строки.
Решение задачи
👍4
Поменяйте местами узлы парами
Получив связный список, поменяйте местами каждые два соседних узла и верните его head. Вы должны решить задачу, не изменяя значения в узлах списка (т. е. можно изменить только сами узлы).
Пример 1 (картинка):
Input: head = [1,2,3,4]
Output: [2,1,4,3]
Пример 2:
Input: head = []
Output: []
Пример 3:
Input: head = [1]
Output: [1]
Решение задачи
Получив связный список, поменяйте местами каждые два соседних узла и верните его head. Вы должны решить задачу, не изменяя значения в узлах списка (т. е. можно изменить только сами узлы).
Пример 1 (картинка):
Input: head = [1,2,3,4]
Output: [2,1,4,3]
Пример 2:
Input: head = []
Output: []
Пример 3:
Input: head = [1]
Output: [1]
Решение задачи
👍3
Стак через очередь
Сложность: Лёгкая
Условие задачи: необходимо реализовать стркутуру "последний зашел - первый вышел" используя только две очереди. Реализованная струкутура должна поддерживать функции обычного стака (добавления в стак, удаление верхнего элемента стака, возврат верхнего элемента стака, проверка на наличие элемнтов в стаке).
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: необходимо реализовать стркутуру "последний зашел - первый вышел" используя только две очереди. Реализованная струкутура должна поддерживать функции обычного стака (добавления в стак, удаление верхнего элемента стака, возврат верхнего элемента стака, проверка на наличие элемнтов в стаке).
Пример:
Ввод:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
Вывод: [null, null, null, 2, 2, false]
Объяснение:MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // return 2
myStack.pop(); // return 2
myStack.empty(); // return False
Решение задачи👍7
Уродливое число
Сложность: Лёгкая
Условие задачи: уродливое число - это целое положительное число, множителями которого являются только 2, 3 и 5.
Надо проверить, является ли подаваемое число уродливым.
Пример:
Ввод: n = 6
Вывод: true
Объяснение: 6 = 2 × 3
Ввод: n = 14
Вывод: false
Решение задачи
Сложность: Лёгкая
Условие задачи: уродливое число - это целое положительное число, множителями которого являются только 2, 3 и 5.
Надо проверить, является ли подаваемое число уродливым.
Пример:
Ввод: n = 6
Вывод: true
Объяснение: 6 = 2 × 3
Ввод: n = 14
Вывод: false
Решение задачи
👍2
Смена операции
Сложность: Средняя
Условие задачи: дается целое число, нужно переконвертировать данное число в сумму, слагаемых должно быть не менее двух. А само разложение должно осуществляться таким образом, что произведение слагаемых будет максимальным.
В результате необходимо получить это самое произведение.
Пример:
Ввод: n = 2
Вывод: 1
Объяснение: 2 = 1 + 1, 1 × 1 = 1.
Ввод: n = 10
Вывод: 36
Объяснение: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36.
Решение задачи
Сложность: Средняя
Условие задачи: дается целое число, нужно переконвертировать данное число в сумму, слагаемых должно быть не менее двух. А само разложение должно осуществляться таким образом, что произведение слагаемых будет максимальным.
В результате необходимо получить это самое произведение.
Пример:
Ввод: n = 2
Вывод: 1
Объяснение: 2 = 1 + 1, 1 × 1 = 1.
Ввод: n = 10
Вывод: 36
Объяснение: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36.
Решение задачи
Групповые анаграммы
Сложность задачи: Средняя
Условие задачи:
Дан массив строк strs. Требуется сгруппировать анаграммы вместе. Вы можете вернуть ответ в любом порядке.
Анаграмма — это слово или фраза, образованная путем перестановки букв другого слова или фразы, обычно с использованием всех исходных букв ровно один раз.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дан массив строк strs. Требуется сгруппировать анаграммы вместе. Вы можете вернуть ответ в любом порядке.
Анаграмма — это слово или фраза, образованная путем перестановки букв другого слова или фразы, обычно с использованием всех исходных букв ровно один раз.
Пример:
Ввод:
strs = ["eat","tea","tan","ate","nat","bat"]
Вывод: [["bat"],["nat","tan"],["ate","eat","tea"]]
Ввод: strs = [""]
Вывод: [[""]]
Решение задачи👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Треугольник Паскаля
Сложность задачи: Легкая
Условие задачи:
Дано целое число numRows, верните первые numRows треугольника Паскаля.
В треугольнике Паскаля каждое число является суммой двух чисел непосредственно над ним, как показано на гифке выше.
Пример:
Ввод:
Сложность задачи: Легкая
Условие задачи:
Дано целое число numRows, верните первые numRows треугольника Паскаля.
В треугольнике Паскаля каждое число является суммой двух чисел непосредственно над ним, как показано на гифке выше.
Пример:
Ввод:
numRows = 5
Вывод: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Ввод: numRows = 1
Вывод: [[1]]
Решение задачи👍5
Генерация скобок
Сложность задачи: Средняя
Условие задачи:
Дано n пар круглых скобок, напишите функцию для генерации всех комбинаций правильно сформированных круглых скобок.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дано n пар круглых скобок, напишите функцию для генерации всех комбинаций правильно сформированных круглых скобок.
Пример:
Ввод:
n = 3
Вывод: ["((()))","(()())","(())()","()(())","()()()"]
Ввод: n = 1
Вывод: ["()"]
Решение задачи👍2
Весовая сумма списка 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
Решение задачи👍6❤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
Решение задачи👍1🔥1
Наибольший общий префикс
Частота встречи задач на собеседованиях за последние шесть месяцев:
Facebook* — 21, Amazon — 16, Apple — 14, Adobe — 11, Google — 9, Microsoft — 6, Uber — 6.
Условие задачи:
Напишите функцию для поиска самого длинного общего префикса у массива строк. Если общего префикса нет, верните пустую строку.
Требуемая сложность:
O(S), S — сумма всех символов во всех строках.
Примеры:
Ввод:
Решение задачи
* — организация, признанная экстремистской на территории РФ.
Частота встречи задач на собеседованиях за последние шесть месяцев:
Facebook* — 21, Amazon — 16, Apple — 14, Adobe — 11, Google — 9, Microsoft — 6, Uber — 6.
Условие задачи:
Напишите функцию для поиска самого длинного общего префикса у массива строк. Если общего префикса нет, верните пустую строку.
Требуемая сложность:
O(S), S — сумма всех символов во всех строках.
Примеры:
Ввод:
strs = ["flower","flow","flight"]
Вывод: "fl"
Ввод: strs = ["dog","racecar","car"]
Вывод: ""
Среди введенных строк нет общего префикса.Решение задачи
* — организация, признанная экстремистской на территории РФ.
👍4
Удалить N-й узел из конца списка
Получив head связанного списка, удалите n-й узел из конца списка и верните его head.
Пример 1 (на картинке):
Ввод: head = [1,2,3,4,5], n = 2
Вывод: [1,2,3,5]
Пример 2:
Ввод: head = [1], n = 1
Вывод: []
Пример 3:
Input: head = [1,2], n = 1
Output: [1]
Решение задачи
Получив head связанного списка, удалите n-й узел из конца списка и верните его head.
Пример 1 (на картинке):
Ввод: head = [1,2,3,4,5], n = 2
Вывод: [1,2,3,5]
Пример 2:
Ввод: head = [1], n = 1
Вывод: []
Пример 3:
Input: head = [1,2], n = 1
Output: [1]
Решение задачи
👍3
Минимальная разница во времени
Сложность задачи: Средняя
Условие задачи:
Дан список 24-часовых временных точек в формате "ЧЧ:ММ". Требуется вернуть минимальную разницу в минутах между любыми двумя временными точками в списке.
Пример:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дан список 24-часовых временных точек в формате "ЧЧ:ММ". Требуется вернуть минимальную разницу в минутах между любыми двумя временными точками в списке.
Пример:
Ввод:
timePoints = ["23:59","00:00"]
Вывод: 1
Ввод: timePoints = ["00:00","23:59","00:00"]
Вывод: 0
Решение задачи👍2
Буквенные комбинации номера телефона
Получив строку, содержащую цифры от 2 до 9 включительно, вернуть все возможные комбинации букв, которые может представлять число. Верните ответ в любом порядке. Отображение цифр в буквы (точно так же, как на телефонных кнопках) приведено на картинке. Обратите внимание, что 1 не соответствует ни одной букве.
Примеры:
Ввод: nums = "23"
Вывод: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
Ввод: digits = ""
Вывод: []
Ввод: digits = "2"
Вывод: ["a","b","c"]
Решение задачи
Получив строку, содержащую цифры от 2 до 9 включительно, вернуть все возможные комбинации букв, которые может представлять число. Верните ответ в любом порядке. Отображение цифр в буквы (точно так же, как на телефонных кнопках) приведено на картинке. Обратите внимание, что 1 не соответствует ни одной букве.
Примеры:
Ввод: nums = "23"
Вывод: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
Ввод: digits = ""
Вывод: []
Ввод: digits = "2"
Вывод: ["a","b","c"]
Решение задачи
👍4
Самая длинная последовательная последовательность
Сложность задачи: Средняя
Условие задачи:
Дан несортированный массив целых чисел nums. Требуется вернуть длину самой длинной последовательности последовательных элементов.
Вы должны написать алгоритм, который работает за время O(n).
Пример:
Ввод:
Ввод:
Сложность задачи: Средняя
Условие задачи:
Дан несортированный массив целых чисел nums. Требуется вернуть длину самой длинной последовательности последовательных элементов.
Вы должны написать алгоритм, который работает за время O(n).
Пример:
Ввод:
nums = [100,4,200,1,3,2]
Вывод: 4
Объяснение: Самая длинная последовательность последовательных элементов — [1, 2, 3, 4]. Следовательно, его длина равна 4.Ввод:
nums = [0,3,7,2,5,8,4,6,0,1]
Вывод: 9
Решение задачи👍2🔥1
Лучшее время для покупки и продажи акций
Условие задачи:
Вам дан массив prices, где prices[i] — цена данной акции на i-й день.
Вы хотите максимизировать свою прибыль, выбрав один день для покупки одной акции и выбрав другой день в будущем для продажи этой акции.
Верните максимальную прибыль, которую вы можете получить от этой сделки. Если вы не можете получить никакой прибыли, верните 0.
Пример:
Ввод:
Покупка во 2-й день (цена = 1) и продажа в 5-й день (цена = 6), прибыль = 6-1 = 5.
Обратите внимание, что покупка во 2-й день и продажа в 1-й день не разрешены, потому что вы должны купить перед продажей.
Ввод:
Условие задачи:
Вам дан массив prices, где prices[i] — цена данной акции на i-й день.
Вы хотите максимизировать свою прибыль, выбрав один день для покупки одной акции и выбрав другой день в будущем для продажи этой акции.
Верните максимальную прибыль, которую вы можете получить от этой сделки. Если вы не можете получить никакой прибыли, верните 0.
Пример:
Ввод:
prices = [7,1,5,3,6,4]
Вывод: 5
Объяснение: Покупка во 2-й день (цена = 1) и продажа в 5-й день (цена = 6), прибыль = 6-1 = 5.
Обратите внимание, что покупка во 2-й день и продажа в 1-й день не разрешены, потому что вы должны купить перед продажей.
Ввод:
prices = [7,6,4,3,1]
Вывод: 0
Решение задачи👍6
Целое число английскими словами
Сложность задачи: Трудная
Условие задачи:
Преобразуйте неотрицательное целое число num в его представление английскими словами.
Пример:
Ввод:
Сложность задачи: Трудная
Условие задачи:
Преобразуйте неотрицательное целое число num в его представление английскими словами.
Пример:
Ввод:
num = 123
Вывод: "One Hundred Twenty Three"
Ввод: num = 12345
Вывод: "Twelve Thousand Three Hundred Forty Five"
Решение задачи👍6
Уникальные тропы
Сложность задачи: Средняя.
Условие задачи: дано поле размером m x n. Изначально робот находится в левом верхнем углу. Необходимо посчитать сколькими возможными уникальными путями робот может добраться в правый нижний угол.
Робот может двигаться лишь вправо и вниз.
Пример:
Ввод: m = 3, n = 7
Вывод: 28.
Решение задачи
Сложность задачи: Средняя.
Условие задачи: дано поле размером m x n. Изначально робот находится в левом верхнем углу. Необходимо посчитать сколькими возможными уникальными путями робот может добраться в правый нижний угол.
Робот может двигаться лишь вправо и вниз.
Пример:
Ввод: m = 3, n = 7
Вывод: 28.
Решение задачи
👍2
Одно редактирование
Сложность задачи: Средняя
Условие задачи:
Даны две строки 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
Решение задачи👍3
Удали и Заработай
Сложность задачи: Средняя
Условие задачи:
Вам дан целочисленный массив nums. Вы хотите максимизировать количество очков, которые вы получаете, выполняя следующую операцию любое количество раз:
Выберите любое число nums[i] и удалите его, чтобы заработать очки nums[i]. После этого вы должны удалить каждый элемент, равный nums[i] - 1, и каждый элемент, равный nums[i] + 1.
Верните максимальное количество очков, которое вы можете заработать, применив описанную выше операцию несколько раз.
Пример:
Ввод:
Вы можете выполнять следующие операции:
- Удалите 4, чтобы заработать 4 очка. Следовательно, 3 также удаляется. nums = [2].
- Удалите 2, чтобы заработать 2 очка. nums = [].
Всего вы заработаете 6 баллов.
Ввод:
Сложность задачи: Средняя
Условие задачи:
Вам дан целочисленный массив nums. Вы хотите максимизировать количество очков, которые вы получаете, выполняя следующую операцию любое количество раз:
Выберите любое число nums[i] и удалите его, чтобы заработать очки nums[i]. После этого вы должны удалить каждый элемент, равный nums[i] - 1, и каждый элемент, равный nums[i] + 1.
Верните максимальное количество очков, которое вы можете заработать, применив описанную выше операцию несколько раз.
Пример:
Ввод:
nums = [3,4,2]
Вывод: 6
Объяснение:Вы можете выполнять следующие операции:
- Удалите 4, чтобы заработать 4 очка. Следовательно, 3 также удаляется. nums = [2].
- Удалите 2, чтобы заработать 2 очка. nums = [].
Всего вы заработаете 6 баллов.
Ввод:
nums = [2,2,3,3,3,4]
Вывод: 9
Решение задачи👍3