LeetCode Community
9.75K subscribers
802 photos
5 videos
1.1K links
Сообщество пользователей-фанатов LeetCode. 🦾

Ссылка для друга: https://t.me/+fhGikrkptrpkYmIy

По всем вопросам: @mascarov_valentin или @adv_and_pr

НЕ являемся официальным каналом leetcode.com.

№4974320675
Download Telegram
Партиционированние массива

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

Условие задачи: дается целочисленный массив, содержащий 2n-чисел, надо сгруппировать эти числа в n-пар (a1, b1), (a2, b2), ..., (an, bn), таких что сумма min(ai, bi) для всех i - максимальна. Необходимо вычислить максимальную сумму.

Пример:

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

Комбинации пар :
1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4 (максимум).

Решение задачи
👍3
Длиннейшая подпоследовательность с ограниченной суммой

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

Условие задачи: дается целочисленный массив nums длины n и целочисленный массив queries длины m.

Необходимо вернуть ответ в массиве, где i-ый элемент массива - максимальная длина подпоследовательности, которую можно вычислить в массиве nums, так что сумма этих элементов будет не больше, чем queries[i].

Пример:

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

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

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

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

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

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

Пример:

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

Решение задачи
👍2
Извлечение камней для минимизации общего количества

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

Условие задачи: дается проиндексированный с нуля целочисленный массив piles, где каждое число отображает количество камней в соответствующей куче. Помимо этого дается также целое число k - количество раз, которое надо применить операцию: выбрать кучу камней и извлечь из нее floor(piles[i] / 2) камней.

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

Необходимо вычислить минимальное количество итогового оставшегося количества камней после применения данной операции k-раз.

Пример:

Ввод:
piles = [5,4,9], k = 2
Вывод: 12

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

Решение задачи
👍1
Максимальное количество сумок, полностью заполненных камнями

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

Условие задачи: дается n-сумок, пронумерованных с нуля. Дается также два массива, проиндексированных аналогичным образом: capacity и rocks. i-а сумка может вмещать capacity[i] камней и в текущий момент содержит уже rocks[i] каменей. Помимо этого дается еще additionalRocks, число камней, которые можно добавить в произвольную сумку.

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

Пример:

Ввод:
capacity = [2,3,4,5], rocks = [1,2,4,4], additionalRocks = 2
Вывод:
3

Ввод:
capacity = [10,2,2], rocks = [2,2,0], additionalRocks = 100
Вывод:
3

Решение задачи
👍4
Дорогие подписчики, поздравляю вас всех с наступающим Новым годом!

Желаю, чтобы каждая минута приносила только радость, каждое событие было приятным и долгожданным, а каждая задумка заканчивалась успешным результатом!🎄🎄🎄🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉36🔥32👍2
Разность по потомкам

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

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

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

Пример:

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

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

Решение задачи
👍5
Извлечение камней для минимизации общего количества

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

Условие задачи: дается проиндексированный с нуля целочисленный массив piles, где каждое число отображает количество камней в соответствующей куче. Помимо этого дается также целое число k - количество раз, которое надо применить операцию: выбрать кучу камней и извлечь из нее floor(piles[i] / 2) камней.

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

Необходимо вычислить минимальное количество итогового оставшегося количества камней после применения данной операции k-раз.

Пример:

Ввод:
piles = [5,4,9], k = 2
Вывод: 12

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

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

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

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

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

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

Пример:

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

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

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

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

Условие задачи: дается два массива строк list1 и list2, найдите общие строки с наименьшей суммой индексов.

Общая строка - это строка, которая появилась как в list1, так и в list2.

Общая строка с наименьшей суммой индексов - это общая строка, такая, что если она появилась в list1[i] и list2[j], то i + j должно быть минимальным значением среди всех других общих строк.

Возвращает все общие строки с наименьшей суммой индексов. Верните ответ в любом порядке.

Пример:

Ввод:
list1 = ["Shogun","Tapioca Express","Burger King","KFC"], list2 = ["Piatti","The Grill at Torrey Pines","Hungry Hunter Steakhouse","Shogun"]
Вывод: ["Shogun"]

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

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

Условие задачи: у Алисы есть конфеты, где 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

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

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

Условие задачи: вдоль кольцевого маршрута расположено 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

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

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

Условие задачи: дается массив точек, где точки [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

Решение задачи
👍6🤔3
Минимальная разница между узлами бинарного дерева

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

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

Пример:

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

Ввод: root = [1,0,48,null,null,12,49]
Вывод: 1

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

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

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

В магазине есть 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

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

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

Условие задачи: предоставляется массив из 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

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

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

Условие задачи: дано неориентированное дерево, состоящее из 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

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

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

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

Учитывая целочисленный массив 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

Решение задачи
👍2
Количество узлов

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

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

Массив ребер задан на ребрах фермы[i] = [ai, bi], что означает наличие ребра между узлами ai и bi в дереве.

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

Поддерево дерева - это дерево, состоящее из узла в T и всех его дочерних узлов.

Пример:

Ввод:
n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], labels = "abaedcd"
Вывод: [2,1,1,1,1,1,1]
Объяснение:

Ввод:
n = 4, edges = [[0,1],[1,2],[0,3]], labels = "bbbb"
Вывод: [4,2,1,1]

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

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

Условие задачи: дано дерево (т.е. связанный неориентированный граф, не имеющий циклов) с корнем в узле 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

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