Surrounded Regions
Question
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.
A region is captured by flipping all 'O''s into 'X''s in that surrounded region.
Example
X X X X
X O O X
X X O X
X O X XAfter capture all regions surrounded by 'X', the board should be:
X X X X
X X X X
X X X X
X O X XTags
Breadth First Search Union Find
Related Problems
Hard Number of Islands II Easy Number of Islands
Analysis
本题也是一个多解的问题。
一种比较巧妙的思路是从边缘的'O'出发,通过DFS,所有能够遍历的'O'都可以暂时被标记为'#',那么剩下未能被标记的'O'说明被surrounded,需要在遍历结束之后全部转为'X'。(用DFS或者BFS要警惕栈溢出)
另一种方法是用Union Find,将与边缘相连通的'O'全部union到一个dummy node(也可以用hasEdge[]来存储,不过内存占用更多), 最终将没有和这个dummy node是一个component的'O'点全部标记为'X'。
Solution
DFS - (7ms AC 42.74%)
DFS - (4ms AC 100%)
DFS - Cleaner Version (6ms 59.18%)
Union Find (20 ms 14.75% AC)
Reference
Last updated
Was this helpful?