給定乙個二維的矩陣,包含x
和o
。
找到所有被x
圍繞的區域,並將這些區域裡所有的o
用x
填充。
被圍繞的區間不會存在於邊界上,換句話說,任何邊界上的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
,然後對四個方向進行深度搜尋,同樣標記相連o
為a
,接下來對於矩陣的四個邊界進行遞迴深度搜尋,將所有與邊界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 解釋 被圍繞的區間不會存...