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
Самый длинный путь с разными соседними символами

Сложность: Тяжёлая

Условие задачи: дано дерево (т.е. связанный неориентированный граф, не имеющий циклов) с корнем в узле 0, состоящее из n узлов, пронумерованных от 0 до n - 1. Дерево представлено родительским массивом с индексом 0 размера n, где родительский элемент[i] является родительским элементом узла i. Поскольку узел 0 является корневым, родительский элемент[0] == -1.

Вам также выдаются строки длиной n, где s[i] - символ, присвоенный узлу i.

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

Пример:

Ввод:
parent = [-1,0,0,1,1,2], s = "abacbe"
Вывод: 3

Ввод: parent = [-1,0,0,0], s = "aabc"
Вывод: 3

Решение задачи
👍2
Перестановки II

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

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

Пример:

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

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

Решение задачи
👍2
Неубывающий подмассив

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

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

Пример:

Ввод:
nums = [4,6,7,7]
Вывод: [[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]

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

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

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

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

Опустите все пары пустых скобок, которые не влияют на взаимно однозначное сопоставление между строкой и исходным двоичным деревом.

Пример:

Ввод:
root = [1,2,3,4]
Вывод: "1(2(4))(3)"

Ввод: root = [1,2,3,null,4]
Вывод: "1(2()(4))(3)"

Решение задачи
👍5👎1
Количество точек на прямой

Сложность: Тяжёлая

Условие задачи: дается массив точек, где точки [i] = [xi, yi] представляют точку на плоскости X-Y, верните максимальное количество точек, которые лежат на одной прямой.

Пример:

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

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

Решение задачи
👍3
Длина последнего слова в строке

Частота встречи задач на собеседованиях за последние шесть месяцев:
Amazon — 3, Microsoft — 2, Google — 3.

Условие задачи:
Дана строка s, состоящая из слов и пробелов. Требуется вернуть длину последнего слова в строке.

Слово — это максимальная подстрока, состоящая только из символов, не содержащих пробелов.

Требуемая сложность:
O(N), N - длина строки.

Примеры:
Ввод: s = "Hello World"
Вывод: 5
Объяснение: Последнее слово строки s "World" имеет длину 5.

Ввод: s = " fly me to the moon "
Вывод: 4
Объяснение: Последнее слово строки s "moon" имеет длину 4.

Решение задачи
👍1
Мороженое

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

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

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

Верните максимальное количество батончиков мороженого, которые мальчик может купить за монеты coins.

Мальчик может купить батончики мороженого в любом порядке.

Пример:

Ввод:
costs = [1,3,2,4,1], coins = 7
Вывод: 4
Объяснение:1 + 3 + 2 + 1 = 7.

Ввод: costs = [10,6,8,7,7,8], coins = 5
Вывод: 0

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

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

Условие задачи: предоставляется массив из n строк strs, все одинаковой длины.

Строки могут быть расположены таким образом, чтобы на каждой строке было по одной, образуя сетку. Например, strs = ["abc", "bce", "ce"] может быть организован как:

abc
bce
cae

Вам нужно удалить столбцы, которые не отсортированы лексикографически. В приведенном выше примере (с индексом 0) столбцы 0 ('a', 'b', 'c') и 2 ('c', 'e', 'e') отсортированы, в то время как столбец 1 ('b', 'c', 'a') не отсортирован., таким образом, вы бы удалили столбец 1.

Верните количество столбцов, которые нужно удалять.

Пример:

Ввод
: strs = ["cba","daf","ghi"]
Вывод: 1

Ввод: strs = ["a","b"]
Вывод: 0

Решение задачи
👍4
Сбор урожая яблок

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

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

Ребра неориентированного дерева заданы в массиве ребер, где ребра[i] = [ai, bi] означают, что существует ребро, соединяющее вершины ai и bi. Кроме того, существует логический массив has Apple, где has Apple[i] = true означает, что в вершине i есть яблоко; в противном случае в ней нет никакого яблока.

Пример:

Ввод:
n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,true,false,true,true,false]
Вывод: 8


Ввод:
n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,true,false,false,true,false]
Вывод: 6

Решение задачи
👍41
Усадка клумбы

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

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

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

Пример:

Ввод:
flowerbed = [1,0,0,0,1], n = 1
Вывод: true

Ввод: flowerbed = [1,0,0,0,1], n = 2
Вывод: false

Решение задачи
👍21
Максимальная сумма замкнутого подмассива

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

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

Циклический массив означает, что конец массива соединяется с началом массива. Формально следующим элементом nums[i] является nums[(i + 1) % n], а предыдущим элементом nums[i] является nums[(i - 1 + n) % n].

Подмассив может включать в себя каждый элемент фиксированных чисел буфера не более одного раза. Формально, для подмассива nums[i], nums[i + 1], ..., nums[j] не существует i <= k1, k2 <= j с k1 % n == k2 % n.

Пример:

Ввод:
nums = [1,-2,3,-2]
Вывод: 3
Объяснение: [3]

Ввод: nums = [5,-3,5]
Вывод: 10

Решение задачи
1👍1
Мост наименьшей длины

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

Условие задачи: на вход подается матрица, в которой 1 - суша, 0 - вода.

Остров представляет из себя совокупность частей суши, соединенных в четырех направлениях. На решетке существуют только два острова.

Можно изменить 0 на 1 для соединения двух островов в один.

Необходимо посчитать количество смен нулей на единицу для соединения двух островов.

Пример:

Ввод: grid = [[0,1],[1,0]]
Вывод: 1
Объяснение:

Ввод: grid = [[0,1,0],[0,0,0],[0,0,1]]
Вывод:
2

Решение задачи
👍3
Взлом замка

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

Условие задачи: даётся замок, состоящий из четырёх вращающихся дисков, на каждом из которых имеется 10 цифр: от 0 до 9. При этом за раз можно перемещать только одно колесо и на одно значение.

Изначально замок находится на значении «0000».

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

Помимо этого даётся шифр открывающий замок, необходимо вычислить наименьшее число перемещений дисков механизма для открытия замка.

Пример:

Ввод:
deadends = ["0201","0101","0102","1212","2002"], target = "0202"
Вывод:
6
Объяснение:
последовательность, открывающая замок: "0000" -> "1000" -> "1100" -> "1200" -> "1201" -> "1202" -> "0202".

Решение задачи
👍6🔥1
Подсчет подостровов

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

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

Острова на второй решетке рассматриваются как подострова только в случае полного соответствия отображения с первой решетки.

Необходимо вычислить количество подостровов на втором поле.

Пример:

Ввод:
grid1 = [[1,1,1,0,0],[0,1,1,1,1],[0,0,0,0,0],[1,0,0,0,0],[1,1,0,1,1]], grid2 = [[1,1,1,0,0],[0,0,1,1,1],[0,1,0,0,0],[1,0,1,1,0],[0,1,0,1,0]]
Вывод:
3
Объяснение:

Ввод:
grid1 = [[1,0,1,0,1],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[1,0,1,0,1]], grid2 = [[0,0,0,0,0],[1,1,1,1,1],[0,1,0,1,0],[0,1,0,1,0],[1,0,0,0,1]]
Вывод:
2

Решение задачи
👍1
Путь минимальной суммы

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

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

Двигаться можно лишь вправо и вниз.

Пример:

Ввод:
grid = [[1,3,1],[1,5,1],[4,2,1]]
Вывод: 7
Объяснение: *во вложении

Решение задачи
👍2
Избыточность соединения

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

Условие задачи: дается ненправленный граф, не имеющий циклов.

Узлы графа соединены между собой и отражаются списком соединения edges[i] = [ai, bi].

В графе имеется избытоное ребро, которое может быть безболезнено извлечено из списка связности.

Необходимо вывести ребро, которое можно удалить без потери информации.

Пример:

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


Решение задачи
👍2
Сводные диапазоны

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

Условие задачи: дается массив из уникальных целых чисел цисел. Срез [a,b] - включает в себя множество значений из данного отрезка включительно.

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

• "a->b" if a != b
• "a" if a == b

Пример:

Ввод:
nums = [0,1,2,4,5,7]
Вывод:
["0->2","4->5","7"]

Объяснение:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

Ввод:
nums = [0,2,3,4,6,8,9]
Вывод:
["0","2->4","6","8->9"]

Решение задачи
👍21👎1
Змейка из машин

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

Условие задачи: есть n машин, направляющихся в одно и то же место на расстоянии target по однополосной дороге.

Дается два целочисленных массива длины n, в первом хранится положение, а во втором скорость соответствующей машины.

Машины не могут обгонять друг друга, и в случае если быстрая машина догнала медленную, то движение она у же продолжает со скоростью медленной машины.

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

Необходимо вычислить количество таких змеек.

Пример:

Ввод: target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
Вывод: 3
Объяснение:

Ввод:
target = 10, position = [3], speed = [3]
Вывод: 1

Решение задачи
👍3
Минимальный размер подмассива с суммой

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

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

Пример:

Ввод:
target = 7, nums = [2,3,1,2,4,3]
Вывод: 2
Объяснение: сумма в подмассиве [4,3] равна цели - 7


Решение задачи
👍1
Раскладка костей

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

Условие задачи: есть два типа костей: типа domino и типа tromino.

Дается целое число n, необходимо вычислить количество комбинаций чтобы выложить поле размером 2 x n при помощи двух типов костей.

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

Пример:

Ввод:
n = 3
Вывод: 5
Объяснение: *во вложении

Решение задачи
👍3