Я знаю, что название кажется неоднозначным, поэтому я добавил изображение, которое будет полезно для понимания проблемы. Мне нужно найти дыры внутри белого региона. Отверстие определяется как одна или несколько ячеек со значением "0" внутри белого региона. Я имею в виду, что он должен быть полностью закрыт ячейкой со значением "1" (например, здесь мы можем увидеть три отверстия, отмеченные как 1, 2 и 3). Я придумал довольно наивное решение: 1. Искать всю матрицу для ячеек со значением '0' 2. Запустите DFS (Flood-Fill), когда встречается такая ячейка (черная) и проверяем, можем ли мы коснуться границы основной прямоугольной области 3. Если мы коснемся границы во время DFS, то это не отверстие, и если мы не сможем достичь границы, тогда это будет рассматриваться как дыра
Теперь это решение работает, но мне было интересно, есть ли какое-нибудь другое эффективное/быстрое решение этой проблемы.
Пожалуйста, дайте мне знать ваши мысли. Спасибо.