Surrounded Regions

https://leetcode.com/problems/surrounded-regions/

这道题和Number of islands很像,DFS思路,四个方向搜寻。

最重要的要点就是从四个boundary开始搜索,那么是"O"的就会一直是O不会被包围

class Solution:
    def solve(self, board: List[List[str]]) -> None:
        """
        Do not return anything, modify board in-place instead.
        """
        m = len(board)
        if m == 0:
            return board
        n = len(board[0])
        def dfs(i,j,board):
            m = len(board)
            n = len(board[0])
            if i < 0 or i >= m or j < 0 or j >= n or board[i][j] != "O":
                return
            board[i][j] = "*"
            dfs(i+1,j,board)
            dfs(i-1,j,board)
            dfs(i,j+1,board)
            dfs(i,j-1,board)
        
        for i in range(m):
            dfs(i,0,board)
            dfs(i,n-1,board)
        
        for j in range(n):
            dfs(0,j,board)
            dfs(m-1,j,board)
        
        for i in range(m):
            for j in range(n):
                if board[i][j] != "*":
                    board[i][j] = "X"
                else:
                    board[i][j] = "O"
        return board

Last updated

Was this helpful?