leetcode130 被圍繞的區域

2021-09-23 13:58:09 字數 1308 閱讀 3987

首先對邊界上每乙個'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解釋 被圍繞的區間不會存在於...