Самая длинная подстрока без повторений
Сложность: Средняя.
Условие задачи: дана строка надо найти самую длинную подстроку, в которой не будет повторений.
Пример:
Ввод:
Ввод:
Сложность: Средняя.
Условие задачи: дана строка надо найти самую длинную подстроку, в которой не будет повторений.
Пример:
Ввод:
s = "abcabcbb"
Вывод: 3
Объяснение: ответом является подстрока "abc", длина которой равна 3. Ввод:
s = "bbbbb"
Вывод: 1
Ввод: s = "pwwkew"
Вывод: 3
Объяснение: ответ - "wke" (длина = 3).
Решение задачи👍3❤1
Бинарный поиск
Сложность: Лёгкая
Условие задачи: дан целочисленный массив, отсортированный в порядке возрастания. Необходимо найти индекс target-значения. Если целевое значение отсутствует - нужно вернуть -1.
Пример:
Ввод: nums = [-1,0,3,5,9,12], target = 9
Вывод: 4
Ввод:
Сложность: Лёгкая
Условие задачи: дан целочисленный массив, отсортированный в порядке возрастания. Необходимо найти индекс target-значения. Если целевое значение отсутствует - нужно вернуть -1.
Пример:
Ввод: nums = [-1,0,3,5,9,12], target = 9
Вывод: 4
Ввод:
nums = [-1,0,3,5,9,12], target = 2
Вывод: -1
Решение задачи👍4
Пересечение двух массивов II
Сложность: Лёгкая
Условие задачи: даны два целочисленных массива, необходимо вернуть все элементы, встречающиеся в каждом из них. Ответ может быть возвращен в любом порядке.
Пример:
Ввод:
Ввод:
Решение задачи
Сложность: Лёгкая
Условие задачи: даны два целочисленных массива, необходимо вернуть все элементы, встречающиеся в каждом из них. Ответ может быть возвращен в любом порядке.
Пример:
Ввод:
nums1 = [1,2,2,1], nums2 = [2,2]
Вывод: [2,2]Ввод:
nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Вывод: [4,9] или [9,4]Решение задачи
👍3
Изменение порядка следования элементов связного списка
Сложность: Средняя
Условие задачи : дан связный список:
L0 → L1 → … → Ln - 1 → Ln.
Надо переопределить порядок следования элементов на следующий:
L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
Пример:
Ввод: head = [1,2,3,4]
Вывод: [1,4,2,3]
Ввод: [1,2,3,4,5]
Вывод: [1,5,2,4,3]
Решение задачи
Сложность: Средняя
Условие задачи : дан связный список:
L0 → L1 → … → Ln - 1 → Ln.
Надо переопределить порядок следования элементов на следующий:
L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
Пример:
Ввод: head = [1,2,3,4]
Вывод: [1,4,2,3]
Ввод: [1,2,3,4,5]
Вывод: [1,5,2,4,3]
Решение задачи
👍3🤔1
Середина связного списка
Сложность: Лёгкая
Условие задачи: дан связный список. Необходимо вернуть указатель на серединный элемент исходного списка.
Пример:
Ввод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дан связный список. Необходимо вернуть указатель на серединный элемент исходного списка.
Пример:
Ввод:
head = [1,2,3,4,5]
Вывод: [3,4,5]
Объяснение: серединный узел - узел 3.
Ввод: head = [1,2,3,4,5,6]
Вывод: [4,5,6]
Объяснение: лист имеет два серединных значения: 3 и 4, мы возвращаем второй. Решение задачи
👍5🎉1
Реализация класса MinStack
Сложность: Средняя
Условиеи задачи: разработай пользовательский класс MinStack(), который будет иметь следующие методы:
-
-
-
-
Требуется реализовать все методы таким образом чтобы каждый из них имел временную сложность O(1).
Пример:
Ввод:
Сложность: Средняя
Условиеи задачи: разработай пользовательский класс MinStack(), который будет иметь следующие методы:
-
void push(int val), который добавляет элемент в стак;-
void pop(), удаляющий верхний элемент стака;-
int top(), возвращающий верхний элемент на стаке;-
int getMin(), возвращающий минимальный элемент в стаке на момент вызова метода. Требуется реализовать все методы таким образом чтобы каждый из них имел временную сложность O(1).
Пример:
Ввод:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
Вывод:[null,null,null,null,-3,null,0,-2]
Объяснение:MinStack minStack = новый объект класса MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); // return -3
minStack.pop();
minStack.top(); // return 0
minStack.getMin(); // return -2
Решение задачи👍6❤1
Перестановки, зависящие от регистра символа
Сложность: Средняя
Условие задачи: дана строка, содержащая как цифры, так и буквы. Надо вернуть всевозможные варианты перестановок строки, изменяя регистр букв.
Пример:
Ввод: s = "a1b2"
Вывод: ["a1b2","a1B2","A1b2","A1B2"]
Ввод: s = "3z4"
Вывод: ["3z4","3Z4"]
Решение задачи
Сложность: Средняя
Условие задачи: дана строка, содержащая как цифры, так и буквы. Надо вернуть всевозможные варианты перестановок строки, изменяя регистр букв.
Пример:
Ввод: s = "a1b2"
Вывод: ["a1b2","a1B2","A1b2","A1B2"]
Ввод: s = "3z4"
Вывод: ["3z4","3Z4"]
Решение задачи
👍3
Треугольник
Сложность: Средняя
Условие задачи: дан двумерный массив, надо посчитать минимальную сумму от вершины тругольника до его основания.
На каждом шаге, анходясь на i-ой позиции можно перемещаться на i-ую или i+1 позицию следующего ряда.
Пример:
Ввод:
Объяснение:
Минимальный путь выглядит следующим образом:
Решение задачи
Сложность: Средняя
Условие задачи: дан двумерный массив, надо посчитать минимальную сумму от вершины тругольника до его основания.
На каждом шаге, анходясь на i-ой позиции можно перемещаться на i-ую или i+1 позицию следующего ряда.
Пример:
Ввод:
triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
Вывод: 11
Объяснение:
треуголльник выглядит следующим образом:
2
3 4
6 5 7
4 1 8 3
Минимальный путь выглядит следующим образом:
2 + 3 + 5 + 1 = 11.Решение задачи
👍11❤1
Мокрые бандиты
Сложность: Средняя
Условие задачи: Мы - профессиональные грабители, обчищающие дома под Рождество и в каждом ограбленном нами доме оставляем характерный символ: невыключенный кран с водой.
Перед нами стоит задача: ограбить на максимальную сумму дома, находящиеся на проспекте Линкольна, но у данных домов есть характерная черта: при ограбление соседних домов срабатывает сигнализация, вызывающая полицию.
Нам необходимо выяснить какие дома надо ограбить, чтобы получить максимальный куш.
Пример:
Ввод:
Сложность: Средняя
Условие задачи: Мы - профессиональные грабители, обчищающие дома под Рождество и в каждом ограбленном нами доме оставляем характерный символ: невыключенный кран с водой.
Перед нами стоит задача: ограбить на максимальную сумму дома, находящиеся на проспекте Линкольна, но у данных домов есть характерная черта: при ограбление соседних домов срабатывает сигнализация, вызывающая полицию.
Нам необходимо выяснить какие дома надо ограбить, чтобы получить максимальный куш.
Пример:
Ввод:
nums = [1,2,3,1]
Вывод: 4
Объяснение: Грабим 1-ый дом (money = 1), а после навещаем 3-ий дом (money = 3).
Суммарный куш: 1 + 3 = 4.
Решение задачи👍8
Максимальная площадь острова
Сложность: Средняя
Условие задачи: Условие задачи: дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Требуется опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод:
Ввод:
Решение задачи
Сложность: Средняя
Условие задачи: Условие задачи: дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Требуется опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод:
grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Вывод: 6Ввод:
grid = [[0,0,0,0,0,0,0,0]]
Вывод: 0Решение задачи
👍12❤1
Двумерный бинарный поиск
Сложность: Средняя
Условие задачи: данна 2-мерная матрица чисел, в которой числа упорядочены по возрастанию сверху-вниз и слева-направо. Надо определить, есть ли в матрице целевое значение.
Пример:
Ввод:
Вывод: True
Ввод:
Вывод: Fasle
Решение задачи
Сложность: Средняя
Условие задачи: данна 2-мерная матрица чисел, в которой числа упорядочены по возрастанию сверху-вниз и слева-направо. Надо определить, есть ли в матрице целевое значение.
Пример:
Ввод:
matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3Вывод: True
Ввод:
matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13Вывод: Fasle
Решение задачи
👍3
Максимальный подмассив
Сложность: Средняя
Условие задачи: дан целочисленный массив, необходимо найти в нем такой подмассив, сумма элементов в котором будет максимальной.
Подмассивом называется последовательная часть исходного массива.
Пример:
Ввод:
Вывод: 6
Объяснение:
Ввод:
Вывод: 23
Решение задачи
Сложность: Средняя
Условие задачи: дан целочисленный массив, необходимо найти в нем такой подмассив, сумма элементов в котором будет максимальной.
Подмассивом называется последовательная часть исходного массива.
Пример:
Ввод:
nums = [-2,1,-3,4,-1,2,1,-5,4]Вывод: 6
Объяснение:
4,-1,2,1] имеет наибольшую сумму 6.Ввод:
nums = [5,4,-1,7,8]Вывод: 23
Решение задачи
👍8
Скобочная пунктуация
Сложность: Лёгкая
Условие задачи: дана строка, содержащая в себе только символы:
Пример:
Ввод:
Ввод:
Ввод:
Решение задачи
Сложность: Лёгкая
Условие задачи: дана строка, содержащая в себе только символы:
'(', ')', '{', '}', '[', ']'. Надо выполнить проверку на то, корректно ли открыты и закрыты все скобки. Пример:
Ввод:
s = "()"
Вывод: TrueВвод:
s = "()[]{}"
Вывод: TrueВвод:
s = "(]"
Вывод: FalseРешение задачи
👍13❤1
Комбинации
Сложность: Средняя
Условие задачи: даны два целых положительных числа
Пример:
Ввод:
Ввод:
Сложность: Средняя
Условие задачи: даны два целых положительных числа
n и k. Надо вывести все комибинации, состоящие из k-чисел в диапазоне [1, n]. Пример:
Ввод:
n = 4, k = 2
Вывод:[[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
Объяснение: число перестановок равно 6. Важным моментом является неупорядоченность чисел внутри самих комбинаций, то есть пары [1,2] и [2,1] являются одинаковыми. Ввод:
n = 1, k = 1
Вывод: [[1]]
Решение задачи👍6🎉1
Проверка бинарного дерева
Сложность: Средняя
Условие задачи: требуется проверить является ли исходное дерево бинарным деревом поиска.
Правильное бинарное дерево удовлетворяет следующим условиям:
- элементы левого поддеревоа должно быть меньше родителя.
- элементы правого поддерева должны быть больше, чем значение в родительском узле.
- левое и правое поддеревья должны быть также бинарными деревьями поиска.
Пример:
Ввод:
Вывод: False
Объяснение: 4 < 5, но при этом находится в правом поддереве.
Ввод:
Вывод: True
Решение задачи
Сложность: Средняя
Условие задачи: требуется проверить является ли исходное дерево бинарным деревом поиска.
Правильное бинарное дерево удовлетворяет следующим условиям:
- элементы левого поддеревоа должно быть меньше родителя.
- элементы правого поддерева должны быть больше, чем значение в родительском узле.
- левое и правое поддеревья должны быть также бинарными деревьями поиска.
Пример:
Ввод:
root = [5,1,4,null,null,3,6]Вывод: False
Объяснение: 4 < 5, но при этом находится в правом поддереве.
Ввод:
root = [2,1,3]Вывод: True
Решение задачи
👍5
Сцепка бинарного дерева
Сложность: Средняя
Условие задачи: дано бинарное дерево, необходимо вернуть элементы данного дерева, находящиеся на одном уровне.
Пример:
Ввод:
Вывод:
Объяснение:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дано бинарное дерево, необходимо вернуть элементы данного дерева, находящиеся на одном уровне.
Пример:
Ввод:
root = [3,9,20,null,null,15,7]Вывод:
[[3],[9,20],[15,7]]Объяснение:
Ввод:
root = [1]Вывод:
[[1]]Решение задачи
👍9
Изъятие дубликатов из односвязного списка
Сложность: Лёгкая
Условие задачи: дан отсортированный по значениям односвязный список. Нужно удалить из него все дублирующиеся элементы и вернуть также остортриованный список.
Пример:
Ввод:
Сложность: Лёгкая
Условие задачи: дан отсортированный по значениям односвязный список. Нужно удалить из него все дублирующиеся элементы и вернуть также остортриованный список.
Пример:
Ввод:
head = [1,1,2]
Вывод: [1,2]
Ввод: head = [1,1,2,3,3]
Вывод: [1,2,3]
Решение задачи👍5
Перенос каждого указателя вправо
Сложность: Средняя
Условие задачи: дано идеальное бинарное дерево, которое имеет всех потомков на каждом уровне.
Надо произвести такую опреацию, чтобы указатель на каждый следующий элемент указывал не на элемент, находящийся глубже по структурк, а на элемент, находящийся праве.
Пример:
Ввод:
Вывод:
Решение задачи
Сложность: Средняя
Условие задачи: дано идеальное бинарное дерево, которое имеет всех потомков на каждом уровне.
Надо произвести такую опреацию, чтобы указатель на каждый следующий элемент указывал не на элемент, находящийся глубже по структурк, а на элемент, находящийся праве.
Пример:
Ввод:
root = [1,2,3,4,5,6,7]Вывод:
[1,#,2,3,#,4,5,6,7,#]Решение задачи
👍4
Вставка в бинарное дерево
Сложность: Средняя
Условие задачи: дано бинарное дерево и элемент, который необходимо вставить во внутрь дерева, не нарушая структуру. Гарантируется, что элемента еще нет в дереве.
Может существовать несколько возможных вариантов вставок. Необходимо вернуть любой из них.
Пример:
Ввод:
Сложность: Средняя
Условие задачи: дано бинарное дерево и элемент, который необходимо вставить во внутрь дерева, не нарушая структуру. Гарантируется, что элемента еще нет в дереве.
Может существовать несколько возможных вариантов вставок. Необходимо вернуть любой из них.
Пример:
Ввод:
root = [4,2,7,1,3], val = 5
Вывод: [4,2,7,1,3,5]
Объяснение: другой вариант -[5,2,7,1,3,4]
Ввод: root = [40,20,60,10,30,50,70], val = 25
Вывод: [40,20,60,10,30,50,70,null,null,25]
Решение задачи👍3❤2
Быки и коровы
Сложность: Средняя
Условие задачи: разыгрывается партия, в которой мы просим оппонента угадать число. После первой попытки мы мы говорим другу количество отданных цифр и неотгаданных.
Быки - правильные цифры, находящиеся на нужных позициях.
Коровы - правильные числа, но находящиеся на соответствующих позициях.
Задача - выдать подсказку в формате
Пример:
Ввод:
Ввод:
Сложность: Средняя
Условие задачи: разыгрывается партия, в которой мы просим оппонента угадать число. После первой попытки мы мы говорим другу количество отданных цифр и неотгаданных.
Быки - правильные цифры, находящиеся на нужных позициях.
Коровы - правильные числа, но находящиеся на соответствующих позициях.
Задача - выдать подсказку в формате
"xAyB", где x - количество быков, y - количество коров. Пример:
Ввод:
secret = "1807", guess = "7810"
Вывод: "1A3B"
Объяснение:Ввод:
secret = "1123", guess = "0111"
Вывод: "1A1B"
Решение задачи👍6
Петля в связном списке II
Сложность: Средняя
Условие задачи: дан связный список, необходимо вернуть позицию элемента, с которого начинается цикл, если же цикл отсутствует, то надо вернуть null.
Пример:
Ввод:
Вывод: последний элемент зацикливается на элементе с индексом
* соответствующий список проиллюстрирован на картинке.
Решение задачи
Сложность: Средняя
Условие задачи: дан связный список, необходимо вернуть позицию элемента, с которого начинается цикл, если же цикл отсутствует, то надо вернуть null.
Пример:
Ввод:
head = [3,2,0,-4], pos = 1Вывод: последний элемент зацикливается на элементе с индексом
1*. * соответствующий список проиллюстрирован на картинке.
Решение задачи
👍8