首先對邊界上每乙個'o'做深度優先搜尋,將與其相連的所有'o'改為'p'。然後遍歷矩陣,將矩陣中所有'o'改為'x',將矩陣中所有p'變為'o' 。
class solution:
def solve(self, board: list[list[str]]) -> none:
"""do not return anything, modify board in-place instead.
"""if not board or len(board) == 1 or len(board[0]) == 1:
return
m, n = len(board), len(board[0])
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
def dfs(x,y):
for k in range(4):
xx = x + dx[k]
yy = y + dy[k]
if 0 <= xx if board[xx][yy] == 'o':
board[xx][yy] = 'p' #給走過的點染色
dfs(xx, yy)
# 以下在從四周往裡找相鄰的所有點
i = 0
for j in range(n): # 上邊
if board[i][j] == 'o':
board[i][j] = 'p'
dfs(i, j)
i = m - 1
for j in range(n): # 下邊
if board[i][j] == 'o':
board[i][j] = 'p'
dfs(i, j)
j = 0
for i in range(m): # 左邊
if board[i][j] == 'o':
board[i][j] = 'p'
dfs(i, j)
j = n - 1
for i in range(m): # 右邊
if board[i][j] == 'o':
board[i][j] = 'p'
dfs(i, j)
# 染色回來
for i in range(m):
for j in range(n):
if board[i][j] == 'p':
board[i][j] = 'o'
elif board[i][j] == 'o':
board[i][j] = 'x'
return
LeetCode130 被圍繞的區域
給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 x 填充。示例 x x x x x o o x x x o x x o x x執行你的函式後,矩陣變為 x x x x x x x x x x x x x o x x解釋 被圍繞的區間不會存在於...
Leetcode130 被圍繞的區域
給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 x 填充。示例 x x x x x o o x x x o x x o x x執行你的函式後,矩陣變為 x x x x x x x x x x x x x o x x解釋 被圍繞的區間不會存在於...
leetcode 130被圍繞的區域
給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 x 填充。示例 x x x x x o o x x x o x x o x x執行你的函式後,矩陣變為 x x x x x x x x x x x x x o x x解釋 被圍繞的區間不會存在於...