Перейти к содержимому

LeetCode 2996. Наименьшее отсутствующее целое число, большее суммы последовательного префикса | Р...

Shaan Labs

0:00 / 0:00

LeetCode 2996. Наименьшее отсутствующее целое число, большее суммы последовательного префикса | Р...

170 просмотров · 1 месяц назад
Shaan Labs
1,02 тыс. подписчиков
170 просмотров · 1 месяц назад
LeetCode 2996. Наименьшее недостающее целое число, большее суммы последовательного префикса — САМОЕ ПРОСТОЕ объяснение, наглядное. Найдите сумму самого длинного последовательного префикса, затем верните наименьшее целое число, отсутствующее в массиве. В этом видео решается LeetCode 2996 ДВУМЯ простыми методами: поиск в HashSet (пространство O(n)) и сканирование массива (пространство O(1)). Решите за секунды, как только увидите двухэтапный алгоритм. Задача дает массив целых чисел с индексом 0. Префикс является последовательным, когда каждый следующий элемент равен предыдущему элементу плюс один: nums[j] равно nums[j-1]+1. Префикс, состоящий только из nums[0], всегда является последовательным. Вам нужно найти самый длинный последовательный префикс, начиная с индекса 0, вычислить его сумму, затем вернуть наименьшее целое число x, которое больше или равно этой сумме и НЕ присутствует нигде в массиве. Вот и вся задача — два шага, ничего больше. Почему это одна из самых простых задач LeetCode: здесь нет сложной структуры данных, нет сложных рекуррентных соотношений и нет скрытых граничных случаев. Шаг 1 — это простое прямое сканирование, которое суммирует последовательные элементы до тех пор, пока не нарушится правило «плюс один». Шаг 2 начинается с суммы и проверяет, существует ли это число в массиве, увеличивая его на единицу, пока не будет найдено недостающее значение. Это недостающее значение и есть ответ. В этом видео показаны оба принятых подхода. Метод 1 помещает каждый элемент в HashSet для проверок на наличие элементов за O(1) — чистое, быстрое и наиболее распространенное решение. Метод 2 сканирует массив внутри цикла while с флагом «найдено» — нет дополнительной структуры данных, но есть дополнительное пространство за O(1). Оба варианта решения проходят все тестовые случаи на LeetCode, на Java, и код можно скопировать напрямую. Два визуальных пробных запуска делают это невозможным забыть. Пример 1: nums = [1,2,3,2,5]. Самый длинный последовательный префикс — [1,2,3] с суммой 6. Значение 6 отсутствует в массиве, поэтому ответ — 6. Пример 2: nums = [3,4,5,1,12,14,13]. Самый длинный последовательный префикс — [3,4,5] с суммой 12. Значения 12, 13 и 14 присутствуют, но 15 отсутствует, поэтому ответ — 15. Временная сложность составляет O(n) для обоих методов — массив сканируется один раз. Пространственная сложность составляет O(n) для метода HashSet и O(1) для метода массива. Ограничения невелики (n до 50, значения до 50), поэтому даже самое простое решение принимается мгновенно. Разделы (составлены на основе реального контента SRT — каждый длится более 10 секунд): 00:00 — Завязка: Сегодняшний вопрос — 2996 00:08 — Условие задачи: Наименьшее недостающее целое число 00:30 — Простое объяснение префиксной последовательности 00:59 — Суммируется только последовательная часть 01:16 — Два шага: Сумма + Наименьшее недостающее число 01:47 — Пробный запуск: [1,2,3,2,5] дает ответ 6 03:15 — Второй пример: [3,4,5,1,12,14,13] дает ответ 15 04:02 — Псевдокод: Шаг 1. Последовательная сумма 05:45 — Почему цикл прерывается, когда последовательность заканчивается 06:25 — Два метода: HashSet против сканирования массива 06:51 — Метод 1: Поиск в хэш-множестве (пространство O(n)) 08:15 — Метод 2: Сканирование массива (пространство O(1)) 09:53 — Код на Java: Сумма + Оба метода 11:25 — Метод 1 отправлен и принят 12:25 — Метод 2 отправлен и принят 12:38 — Заключение: Подпишитесь на ежедневные задачи Полный код и проект: https://github.com/Shaanworkspace Больше от Shaan Labs: Ежедневные решения LeetCode → https://github.com/Shaanworkspace/YOU... D Часто задаваемые вопросы: Чему равно на LeetCode 2996 Наименьшее недостающее целое число, большее, чем последовательная префиксная сумма? В задаче LeetCode 2996 нужно найти самый длинный префикс массива, где каждый элемент увеличивается ровно на 1, вычислить сумму этого префикса и вернуть наименьшее целое число, большее или равное этой сумме, которое отсутствует в массиве. Как найти самый длинный последовательный префикс в LeetCode 2996? Начните с индекса 0 и двигайтесь вперед, пока nums[i] равно nums[i-1]+1. В момент нарушения правила плюс один префикс заканчивается. Суммируйте все элементы от индекса 0 до последнего последовательного индекса. Каков алгоритм поиска наименьшего отсутствующего целого числа в LeetCode 2996? Сначала вычислите сумму последовательных префиксов. Затем начните с этой суммы и проверьте, существует ли значение в массиве, увеличивая его на единицу каждый раз. Первое значение, отсутствующее в массиве, является ответом. Какова временная сложность LeetCode 2996? O(n), потому что вы сканируете массив один раз, чтобы вычислить префиксную сумму, а затем выполняете поиск за постоянное время. Пространственная сложность составляет O(n) с HashSet или O(1) со сканированием массива. Можно ли решить LeetCode 2996 без дополнительного пространства? Да. Вместо HashSet используйте цикл while для перебора массива с флагом "найдено" для ...