---
id: TASK-33
title: 'Разбор задачи: Remove Invalid Parentheses (Extra)'
status: Done
assignee:
  - '@assistant'
created_date: '2026-09-10 07:51'
updated_date: '2026-09-10 10:40'
labels: []
dependencies: []
references:
  - applications/yandex-codenv/algo-solutions/_template.md
priority: low
type: task
ordinal: 33000
---

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
Файл: algo-solutions/extra/04-remove-invalid-parentheses.md. Hard, BFS/DFS.
<!-- SECTION:DESCRIPTION:END -->

## Acceptance Criteria
<!-- AC:BEGIN -->
- [x] #1 Файл создан со всеми секциями формата
<!-- AC:END -->

## Implementation Plan

<!-- SECTION:PLAN:BEGIN -->
1. Изучить шаблон _template.md и стиль готовых разборов (extra/03-number-of-islands.md). 2. Создать applications/yandex-codenv/algo-solutions/extra/04-remove-invalid-parentheses.md по шаблону: YAML-фронтматер + все секции. LeetCode #301, Hard, категория BFS/DFS. 3. Основное решение — BFS по уровням с visited-множеством (гарантирует минимальное число удалений); вариант — DFS с заранее посчитанными счётчиками удалений. 4. Проверить Ruby-код на примерах (ruby локально). 5. Отметить AC, финальный комментарий, статус Done, коммит.
<!-- SECTION:PLAN:END -->

## Implementation Notes

<!-- SECTION:NOTES:BEGIN -->
Решение и разбор задачи Remove Invalid Parentheses (LeetCode #301, Hard, категория BFS/DFS). Файл: extra/04-remove-invalid-parentheses.md. Основное решение — BFS по уровням с visited-множеством и skip-duplicate оптимизацией. Бонус: DFS с предрасчётом счётчиков удалений rm_open/rm_close. Оба решения верифицированы: 10 тестов на ruby (включая классический пример '()())()' → ['(())()', '()()()']) + верификация свойств (все результаты валидны, уникальны, минимальной длины) на сложном 14-символьном входе. Код синтаксически корректен (ruby -c OK).
<!-- SECTION:NOTES:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Created extra/04-remove-invalid-parentheses.md (LeetCode #301, Hard, BFS/DFS). BFS level-by-level + visited set as main solution; DFS with precomputed removal counts as bonus. Both implementations verified: 10 Ruby test cases passed (std examples + edge cases) + correctness properties verified on complex input (all results valid, unique, minimal length). Ruby syntax OK.
<!-- SECTION:FINAL_SUMMARY:END -->
