Найти в Дзене
LeetCode 96. Unique Binary Search Trees
Представь дерево решений, где у каждого узла есть правило: 📜 Правило BST: • Все числа в ЛЕВОМ поддереве < текущего узла • Все числа в ПРАВОМ поддереве > текущего узла Тебе дали число n — это количество уникальных чисел от 1 до n. Вопрос: Сколько разных по структуре бинарных деревьев поиска можно построить из этих чисел? ⚠️ Важно: Нас интересует только структура дерева, а не какие именно числа в узлах! Единственное число: [1] Только 1 дерево: 1 Ответ: 1 ✅ Давай подумаем: что если мы выберем корень...
1 неделю назад
LeetCode 94. Binary Tree Inorder Traversal
Представь семейное древо, но у каждого человека может быть максимум два ребёнка: Каждый кружочек — это узел с числом внутри. Обход — это правило, по которому мы «гуляем» по дереву и записываем числа в определённом порядке. Тебе дали корень бинарного дерева. Нужно обойти его inorder (левый → корень → правый) и вернуть список чисел в порядке посещения. ⚠️ Важно: Если у узла нет левого или правого ребёнка — просто пропускаем эту часть! Бонус-факт: Для бинарного дерева поиска (BST) inorder-обход всегда...
1 неделю назад
LeetCode 93. Restore IP Addresses
Представь, что IP-адрес — это почтовый индекс для компьютера. Он выглядит так: 192.168.1.1 ↑ ↑ ↑ ↑ 4 числа, разделённые точками Тебе дали строку из цифр (например, "25525511135"). Нужно расставить 3 точки так, чтобы получилась все возможные валидные IP-адреса. ⚠️ Важно: Нельзя менять порядок цифр или удалять их! Только вставлять точки. Возможные варианты: ✅ "255.255.11.135" → все части валидны ✅ "255.255.111.35" → тоже валидно ❌ "25.52.55.11135" → 11135 > 255, нельзя! ❌ "2.5.5.25511135" → последняя часть слишком длинная Ответ: ["255...
1 неделю назад
Задача №91 Decode Ways на LeetCode
Задача №91 на LeetCode — это как быть шпионом! Вам дали зашифрованное сообщение из цифр, и нужно узнать, сколькими способами его можно превратить обратно в буквы. Представьте, что у вас есть секретный код, где каждой букве соответствует число: A = 1 B = 2 C = 3 ... Z = 26 Если друг отправил вам сообщение "12", его можно расшифровать двумя способами: Способ 1: 1 + 2 → A + B → "AB" Способ 2: 12 → L → "L" Ответ: 2 способа ✅ Дана строка из цифр s. Верните количество способов, которыми можно расшифровать это сообщение...
1 неделю назад
Задача №90 Subsets II на LeetCode
Задача №90 на LeetCode — это как собирать рюкзак в поход, но с хитростью: у вас есть одинаковые предметы, и вы не хотите брать с собой два одинаковых набора! Сегодня разберём, как генерировать все возможные комбинации без повторов. 🚀 Представьте, что у вас есть коробка с конфетами: 🍫 🍬 🍫 🍭 Подмножество — это любой набор конфет, который вы можете взять из коробки: В коробке могут быть одинаковые конфеты (дубликаты), но наборы не должны повторяться! Дано: [1, 2, 2] ✅ Правильные подмножества: [],...
1 неделю назад
Задача №89 на LeetCode
Представьте, что у вас есть переключатели (как в старом лифте: этажи 1, 2, 3...). Каждый переключатель может быть: Если у вас 2 переключателя, то возможные комбинации: 00 → 0 01 → 1 10 → 2 11 → 3 При перехоре от одного числа к следующему должен меняться только ОДИН переключатель! ✅ Правильно: 00 → 01 → 11 → 10 ↑ ↑ ↑ один бит один бит один бит ❌ Неправильно: 00 → 11 ↑↑ изменились ДВА бита сразу! Дано число n — количество бит (переключателей). Верните любую последовательность из 2ⁿ чисел,...
1 неделю назад
LeetCode #88: Merge Sorted Array
У вас есть две колоды карт, и в каждой колоде карты уже отсортированы по возрастанию: Колода 1: [1, 3, 5, 7] 🃏 Колода 2: [2, 4, 6] 🃏 Ваша задача: объединить эти две колоды в одну, чтобы все карты остались отсортированными: Результат: [1, 2, 3, 4, 5, 6, 7] ✅ Даны два отсортированных массива: Нужно: объединить nums2 в nums1 так, чтобы nums1 стал одним отсортированным массивом длиной m + n. ⚠️ Важно: Результат должен быть записан внутри массива nums1, а не возвращён как новый массив! Пример: Вход:...
2 недели назад
LeetCode #86: Partition List
У вас есть цепочка друзей, стоящих в очереди. У каждого друга есть номер на футболке 🎽. Ваша задача: перестроить очередь так, чтобы: ⚠️ Важное правило: Внутри каждой группы друзья должны остаться в том же порядке, в котором стояли изначально! Дан связный список и число x. Разбейте список на две части: При этом относительный порядок элементов в каждой группе должен сохраниться! Пример: Вход: 1 → 4 → 3 → 2 → 5 → 2, x = 3 Группа < 3: [1, 2, 2] (в исходном порядке) Группа >= 3: [4, 3, 5] (в исходном...
2 недели назад
LeetCode #83: Remove Duplicates from Sorted List
У вас есть цепочка бусин с числами, причём бусины уже отсортированы по возрастанию: [1] → [1] → [2] → [3] → [3] → [4] → [⊗] Ваша задача: убрать повторяющиеся числа, чтобы каждое осталось только один раз. После "уборки" цепочка должна выглядеть так: [1] → [2] → [3] → [4] → [⊗] 🔗 Это связный список (Linked List): каждый элемент хранит значение и ссылку на следующий. Дан отсортированный связный список. Удалите все дубликаты так, чтобы каждый элемент встречался ровно один раз. Верните голову (начало) очищенного списка...
2 недели назад
Решение задачи "Is Subsequence": Полное руководство с оптимизациями для миллиардов запросов
В этой статье мы подробно разберем решение задачи "Is Subsequence" с платформы NeetCode. Рассмотрим базовое решение с двумя указателями, альтернативные подходы и критически важную оптимизацию для сценария с миллиардами запросов . Условие: Даны две строки s и t. Нужно определить, является ли s подпоследовательностью t. Подпоследовательность — строка, образованная из исходной путем удаления некоторых символов без изменения относительного порядка оставшихся символов. Примеры: s = "ace", t = "abcde"...
3 недели назад
Решение задачи "Score of a String": Пошаговый разбор алгоритма
В этой статье мы подробно разберем решение задачи "Score of a String" с платформы NeetCode. Разберем математическую основу, реализуем оптимальное решение на Java 11, проанализируем сложность и рассмотрим edge cases. Условие: Дана строка s, состоящая из строчных английских букв. Score строки определяется как сумма абсолютных разниц между ASCII-значениями соседних символов. Формула: score(s) = Σ |ASCII(s[i+1]) - ASCII(s[i])| для всех i от 0 до len(s)-2 Пример 1: Input: s = "code" Output: 24 Пошаговый...
3 недели назад
SQL JOINs: Полное руководство с примерами и интеграцией в Java
В этой статье мы подробно разберем все типы SQL JOIN, их особенности, практическое применение и интеграцию с Java-приложениями. Понимание JOIN критически важно для эффективной работы с реляционными базами данных. Реляционные базы данных хранят данные в нормализованных таблицах для устранения дублирования. Чтобы получить связанные данные из нескольких таблиц, нам нужны JOIN — операции объединения таблиц по условиям связи. -- Без JOIN: получаем только данные из одной таблицы SELECT * FROM users; -- С JOIN: получаем данные из связанных таблиц SELECT u...
3 недели назад