Как я могу найти дыру в 2D матрице?

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

Теперь это решение работает, но мне было интересно, есть ли другое эффективное / быстрое решение для этой проблемы.

Пожалуйста, поделись своими мыслями. Благодарю.

Ответы на вопрос(5)

Ваш ответ на вопрос