摘要:將所有和邊界相連的都標(biāo)記出來。那么當(dāng)我重新遍歷數(shù)組的時候,剩下的則是被完全包圍的。
題目要求
Given a 2D board containing "X" and "O" (the letter O), capture all regions surrounded by "X". A region is captured by flipping all "O"s into "X"s in that surrounded region. For example, X X X X X O O X X X O X X O X X After running your function, the board should be: X X X X X X X X X X X X X O X X
將所有被X環(huán)繞的O區(qū)域獲取出來并轉(zhuǎn)化為X
思路與代碼這篇題目與leetcode200. Number of Islands思路非常相近,建議毫無思路的同學(xué)先參考一下這篇博客。其實這種將區(qū)域相連的題目往往都可以使用深度優(yōu)先遍歷或者是Union-Find方法來實現(xiàn)。在這里我就給出深度優(yōu)先遍歷的實現(xiàn)方法,有興趣的同學(xué)可以參考上文的博客來自己實現(xiàn)Union-Find方法。
和leetcode200題不同,在本題中,只有被完全包圍的圖形才可以被選中與轉(zhuǎn)化,也就是,任何一個和數(shù)組邊界上的O相連的都不可能是完全包圍。所以在這題里我們采用逆向思維。將所有和邊界O相連的O都標(biāo)記出來。那么當(dāng)我重新遍歷數(shù)組的時候,剩下的O則是被完全包圍的。
代碼如下:
public void solve(char[][] board) { if(board.length<=2 || board[0].length<=2 ) return; int row = board.length; int column = board[0].length; for(int i = 0 ; i=board.length || j>=board[0].length) return; if(board[i][j] == "X" || board[i][j]=="*") return; board[i][j] = "*"; if(i>1 && board[i-1][j]=="O") boundarySearch(board, i-1, j); if(j>1 && board[i][j-1]=="O") boundarySearch(board, i, j-1); if(i
想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70403.html
摘要:原題鏈接邊緣搜索替換法復(fù)雜度時間空間思路從矩陣的四條邊上的點作為起點,搜索連續(xù)的一塊區(qū)域上值為的點并賦為一個臨時變量。對四條邊上所有點都進(jìn)行過這個步驟后,矩陣內(nèi)剩余的就是被包圍的。 Surrounded Regions Given a 2D board containing X and O, capture all regionssurrounded by X. A region i...
摘要:先用處理左右邊界上的換成再用處理上下邊界除去四角的換成把剩下的沒有被處理過,也就是被包圍的置為把所有暫時置為的不被包圍的換回如當(dāng)前字符的坐標(biāo)越界不是,返回是的都置為,然后迭代其上下左右各點 Problem Given a 2D board containing X and O, capture all regions surrounded by X.A region is captur...
摘要:并查集包括查詢和聯(lián)合,主要使用不相交集合查詢主要是用來決定不同的成員是否在一個子集合之內(nèi)聯(lián)合主要是用來把多個子集合成一個集合的實際運用計算機(jī)網(wǎng)絡(luò)檢查集群是否聯(lián)通電路板檢查不同的電路元件是否聯(lián)通初始化聯(lián)通與檢測與是否聯(lián)通返回聯(lián)通的數(shù) 并查集(Union-Find)包括查詢(Find)和聯(lián)合(Union),主要使用不相交集合(Disjoint-Sets)查詢(Find)主要是用來決定不同的...
摘要:不得不說,對于這道題而言,是一種很木訥的模板。主函數(shù)按矩陣大小建立一個類進(jìn)行后續(xù)操作一個結(jié)點用來連接邊角不可能被圍繞的一個函數(shù)對矩陣元素進(jìn)行結(jié)點線性化。同理,,,在主函數(shù)中初始化后調(diào)用。 Surrounded Regions Problem Given a 2D board containing X and O (the letter O), capture all regions s...
摘要:題目要求提供一個二維數(shù)組表示一張地圖,其中代表陸地,代表海洋。這里使用一個新的二維數(shù)組來表示對應(yīng)地圖上的元素屬于哪個并查集。在合并的時候先進(jìn)行判斷,如果二者為已經(jīng)相連的陸地,則無需合并,否則將新的二維數(shù)組上的元素指向所在的并查集。 題目要求 Given a 2d grid map of 1s (land) and 0s (water), count the number of isla...
閱讀 1408·2023-04-26 01:58
閱讀 2282·2021-11-04 16:04
閱讀 1753·2021-08-31 09:42
閱讀 1765·2021-07-25 21:37
閱讀 1066·2019-08-30 15:54
閱讀 2074·2019-08-30 15:53
閱讀 3047·2019-08-29 13:28
閱讀 2687·2019-08-29 10:56