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

LeetCode 921: Минимальное количество вставок для валидации скобок | НЕ используйте стек! (Трюк с ...

Code Intuition

0:00 / 0:00

LeetCode 921: Минимальное количество вставок для валидации скобок | НЕ используйте стек! (Трюк с ...

19 просмотров · 4 дн. назад
Code Intuition
35 подписчиков
19 просмотров · 4 дн. назад
LeetCode 921: Минимальное сложение для корректного отображения скобок — оптимальное решение с O(1) пространством памяти 🚀 📌 Ссылка на задачу: https://leetcode.com/problems/minimum... Добро пожаловать обратно в Code Intuition! В сегодняшнем видео мы разберем задачу LeetCode 921, «Минимальное сложение для корректного отображения скобок». Большинство людей инстинктивно тянутся к стеку, как только видят задачу со скобками. Но поскольку эта задача включает только один тип скобок, выделение дополнительной памяти совершенно не требуется. Это чистое решение с помощью жадного подхода с двумя счетчиками за O(1) пространство памяти. 💡 Основная идея: Почему стек не нужен: стеки оправданы, когда задействовано несколько типов скобок и порядок совпадения типов имеет значение. Поскольку в игре используются только скобки '(' и ')', на самом деле важен только текущий подсчет несовпадающих открытых позиций, и ничего больше. Отслеживание открытых скобок: каждая скобка '(' увеличивает счетчик, представляя собой открывающую скобку, ожидающую своей пары. Обработка закрывающих скобок: если есть несовпадающая открытая позиция, эта скобка ')' сопоставляется с ней, и счетчик уменьшается. Если открытой позиции нет, эта скобка ')' никогда не может быть сопоставлена ​​в таком виде, перед ней необходимо вставить открывающую скобку, поэтому вместо этого увеличивается отдельный счетчик вставок. Итоговое значение: после завершения сканирования каждая оставшаяся несовпадающая открытая позиция требует закрывающей скобки, а каждая отслеживаемая вставка уже требует открывающей скобки. Общее количество необходимых сумм — это просто сумма обоих счетчиков. 💡 Что вы узнаете из этого видео: Почему стек не нужен, когда существует только один тип скобок Отслеживание несовпадающих открытий с помощью одного счетчика Два различных случая ошибки: висячая ')' и оставшаяся '(' Почему окончательный ответ — это просто сумма двух счетчиков Полный анализ временной и пространственной сложности ⏳ Временная сложность: O(N) — один линейный проход по строке 💾 Пространственная сложность: O(1) — строго постоянное пространство с использованием двух целочисленных счетчиков Решено в рамках моей ежедневной серии задач на LeetCode, по одной задаче в день, развивающей интуицию, а не просто запоминающей решение. Полный код на C++ смотрите в закрепленном комментарии. Не забудьте поставить лайк, подписаться и включить уведомления, чтобы никогда не пропускать ежедневный разбор алгоритма. Оставьте комментарий, если у вас есть вопросы о логике с двумя счетчиками. Свяжитесь со мной: LinkedIn:   / harshwardhanzanwar   #leetcode #leetcode921 #minimumaddtomakeparenthesesvalid #strings #greedy #stack #algorithms #datastructures #competitiveprogramming #codeintuition #codinginterview #cpp #codingtutorial