被圍繞的區域

2022-01-10 09:39:16 字數 1747 閱讀 7155

給定乙個二維的矩陣,包含xo

找到所有被x圍繞的區域,並將這些區域裡所有的ox填充。

被圍繞的區間不會存在於邊界上,換句話說,任何邊界上的o都不會被填充為x。任何不在邊界上,或不與邊界上的o相連的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。如果兩個元素在水平或垂直方向相鄰,則稱它們是相連的。

/**

* @param board

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

*/var solve = function(board)

for (let i = 0; i < m; i++)

for (let i = 1; i < n - 1; i++)

for (let i = 0; i < m; i++)

}return void 0;

};

注意到題目的解釋,任何邊界上的o都不會被填充為x,這句話的意思是,所有最終與邊界處相連的o都不會被填充為x,注意此處的相連指的是如果兩個元素在水平或垂直方向相鄰,則稱它們是相連的。根據解釋,我們將所有邊界上的o找到,然後進行深度遞迴,搜尋所有和這個o相連的o,然後將這個o替換成其他字元,此處替換成了a,然後將矩陣中所有現在存在的o替換成x,即被包圍的需要替換的o,然後將所有的a替換回o即可。首先獲取矩陣的行數為m列數為n,然後定義dfs函式進行遞迴深度遍歷,如果傳遞的下邊不合法或者值不為o就返回,否則就將該值定義為a,然後對四個方向進行深度搜尋,同樣標記相連oa,接下來對於矩陣的四個邊界進行遞迴深度搜尋,將所有與邊界o相連的o標記為a,最後遍歷矩陣,將矩陣中所有現在存在的o替換成x,即被包圍的需要替換的o,然後將所有的a替換回o即可。

被圍繞的區域

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