130 被圍繞的區域

2021-09-19 09:09:53 字數 2679 閱讀 8760

1.所有包含o的邊界上的的格仔,以及它們的鄰居o都不會被包圍,暫時地將這些o標記,通過深度優先搜尋查詢這些o,最後將所有未被標記的o轉換為x

class

solution

:def

solve

(self, board: list[list[

str]])

->

none

:"""

do not return anything, modify board in-place instead.

"""ifnot board or

not board[0]

:return

rows,cols=

len(board)

,len

(board[0]

) to_expand=

# 將要被檢查的格仔構成的棧

for row in

range

(rows)

:# 把所有邊緣格仔加入棧中

to_expand+=

[(row,0)

,(row,cols-1)

]for col in

range(1

,cols-1)

: to_expand+=[(

0,col)

,(rows-

1,col)

]def

bfs(to_expand):if

(to_expand==

none):

return

row,col=to_expand.pop()if

0<=row0<=col[col]

=="o"

: board[row]

[col]

="f"

(row+

1,col)))

(row,col+1)

))(row-

1,col)))

(row,col-1)

))while to_expand:

bfs(to_expand)

for row in

range

(rows)

:for col in

range

(cols)

:if board[row]

[col]

=="o"

: board[row]

[col]

="x"

elif board[row]

[col]

=="f"

: board[row]

[col]

="o"

另外一種形式

class

solution

:def

solve

(self, board: list[list[

str]])

->

none

:"""

do not return anything, modify board in-place instead.

"""ifnot board or

not board[0]

:return

rows,cols=

len(board)

,len

(board[0]

) to_expand=

# 將要被檢查的格仔構成的棧

for row in

range

(rows)

:# 把所有邊緣格仔加入棧中

to_expand+=

[(row,0)

,(row,cols-1)

]for col in

range(1

,cols-1)

: to_expand+=[(

0,col)

,(rows-

1,col)

]while to_expand:

row,col=to_expand.pop()if

0<=row0<=col[col]

=="o"

: board[row]

[col]

="f"

for dr,dc in[(

1,0)

,(0,

1),(

-1,0

),(0

,-1)

]:(row+dr,col+dc)

)#把所有的f重新變回o,把被包圍的o改為x

for row in

range

(rows)

:for col in

range

(cols)

:if board[row]

[col]

=="o"

: board[row]

[col]

="x"

elif board[row]

[col]

=="f"

: board[row]

[col]

="o"

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 解釋 被圍繞的區間...

130 被圍繞的區域 DFS

難度 中等 題目描述 解題思路 這道題的思路有點巧妙 y 因為邊界上的o和它相鄰的o一定不會被標記,所以可以用逆向思維,先把所有邊界上的o和和它相鄰的o都標記出來,最後把標記還原,沒標記過的變成x 130.被圍繞的區域 2020 7 18 public void solve char board i...

130 被圍繞的區域 (dfs

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