給定乙個二維的矩陣,包含'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,沒o那就說明這個四條邊圍的o都需要變成x來處理,如果右o的話,作為乙個突破口,不斷的去觀察,然後標記與o相鄰的o。知道沒有與o相鄰的o出現,標記就完成了。然後對給定的二維矩陣重新左更改,對於標記的都變成o,沒有標記的都變成x。
修該陣列中的』o『
class solution:
def solve(self, board: list[list[str]]) -> none:
"""do not return anything, modify board in-place instead.
"""queue = collections.deque()
m = len(board)
if m<=2:
return
n = len(board[0])
if n<=2:
return
#對陣列進行標記,且把『o』的位置新增到佇列中
for i in range(m):
if board[i][0]=='o':
board[i][0]='.'
if board[i][n-1]=='o':
board[i][n-1]='.'
for i in range(n):
if board[0][i]=='o':
board[0][i]='.'
if board[m-1][i]=='o':
board[m-1][i]='.'
#bfs模板
while queue:
x,y = queue.popleft()
zuobiao = [(1,0),(0,1),(-1,0),(0,-1)]
for xd,yd in zuobiao:
x,y = x+xd,y+yd
if 0<=x總結:典型的迷宮,島嶼問題,這種問題都是需要使用bfs模板。
10 31 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 解釋 被圍繞的...
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 被圍繞的區域
1.所有包含o的邊界上的的格仔,以及它們的鄰居o都不會被包圍,暫時地將這些o標記,通過深度優先搜尋查詢這些o,最後將所有未被標記的o轉換為x class solution def solve self,board list list str none do not return anything,m...