Jak mogę znaleźć dziurę w matrycy 2D?

Wiem, że tytuł wydaje się niejasny i dlatego dołączyłem obraz, który będzie pomocny w zrozumieniu problemu. Muszę znaleźć dziury w białym regionie. Dziura jest zdefiniowana jako jedna lub wiele komórek o wartości „0” wewnątrz białego obszaru, co oznacza, że ​​będzie musiała być całkowicie zamknięta przez komórki o wartości „1” (np. Tutaj możemy zobaczyć trzy otwory oznaczone jako 1, 2 i 3 ). Wymyśliłem całkiem naiwne rozwiązanie: 1. Przeszukaj całą macierz dla komórek o wartości „0” 2. Uruchom DFS (Flood-Fill), gdy napotkasz taką komórkę (czarną) i sprawdź, czy możemy dotknąć granica głównego prostokątnego regionu 3. Jeśli możemy dotknąć granicy podczas DFS, to nie jest to dziura i jeśli nie możemy osiągnąć granicy, zostanie ona uznana za dziurę

Teraz to rozwiązanie działa, ale zastanawiałem się, czy jest jakieś inne wydajne / szybkie rozwiązanie tego problemu.

Proszę, podziel się swoimi myślami. Dzięki.

questionAnswers(5)

yourAnswerToTheQuestion