面试150 被围绕的区域
思路
使用DFS,将所有与边界相连的’O’都修改为‘#’,然后遍历数组,如果是遇到’#‘修改为’O’,如果是’O’修改为’X’。
class Solution:def solve(self, board: List[List[str]]) -> None:"""Do not return anything, modify board in-place instead."""m=len(board)n=len(board[0])direction=[(0,1),(1,0),(0,-1),(-1,0)]def dfs(x,y):if x<0 or x>=m or y<0 or y>=n or board[x][y]!='O':return board[x][y]='#'for dx,dy in direction:dfs(x+dx,y+dy)for i in range(m):if board[i][0]=='O':dfs(i,0)if board[i][n-1]=='O':dfs(i,n-1)for j in range(n):if board[0][j]=='O':dfs(0,j)if board[m-1][j]=='O':dfs(m-1,j)for i in range(m):for j in range(n):if board[i][j]=='#':board[i][j]='O'elif board[i][j]=='O':board[i][j]='X'