被圍繞的區域

2022-08-24 07:42:13 字數 1163 閱讀 9048

給定乙個二維的矩陣,包含 '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

被圍繞的區間不會存在於邊界上,換句話說,任何邊界上的 'o' 都不會被填充為 'x'。 任何不在邊界上,或不與邊界上的 'o' 相連的 'o' 最終都會被填充為 'x'。如果兩個元素在水平或垂直方向相鄰,則稱它們是「相連」的。

def change(i, j):

#dfs將相鄰的o標記為#

if not (0 <= i < rows and 0 <= j < cols):

return

if board[i][j] != 'o':

return

board[i][j] = '#'

for d in [(-1, 0), (1, 0), (0, 1), (0, -1)]:

change(i + d[0], j + d[1])

return

# 遍歷矩陣四條邊的o,並執行dfs標記為

rows, cols = len(board), len(board[0])

for i in [0, rows - 1]:

for j in range(cols):

if board[i][j] == 'o':

change(i, j)

for j in [0, cols - 1]:

for i in range(1, rows - 1):

if board[i][j] == 'o':

change(i, j)

# 遍歷整個矩陣,將o改為x,將#改為o

for i in range(rows):

for j in range(cols):

if board[i][j] == 'o':

board[i][j] = 'x'

elif board[i][j] == '#':

board[i][j] = 'o'

return

被圍繞的區域

被圍繞的區域 給乙個二維的矩陣,包含 x 和 o 找到所有被 x 圍繞的區域,並用 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 x o x x class unionfi...

被圍繞的區域

給定乙個二維的矩陣,包含 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解釋 被圍繞的區間不會存在於...

被圍繞的區域

給定乙個二維的矩陣,包含 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 解釋 被圍繞的區間不會存...