題目連結(jié):
題目意譯:
你被給定一個(gè) m × n 的二元陣列 grid,其中 0 代表著一個(gè)海洋格子而 1 則代表一個(gè)陸地格子。
一「步」是由從一個(gè)陸地格子走到另一個(gè)相鄰(四個(gè)方向的)的陸地格子或是走到 grid 的邊界之外所組成。
回傳 grid 中有多少陸地格子無(wú)論走多少步都無(wú)法走到 grid 的邊界之外。
限制:
m == grid.length
n == grid[i].length
1 ≦ m, n ≦ 500
grid[i][j] 只會(huì)是 0 或是 1。
範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
輸出: 3
解釋?zhuān)?有三個(gè) 1 被 0 包圍住,而有一個(gè) 1 沒(méi)有被包住因?yàn)槠湮混哆吔缟稀?/div>
範(fàn)例 2:
輸入: grid = [[0,1,1,0],[0,0,1,0],[0,0,1,0],[0,0,0,0]]
輸出: 0
解釋?zhuān)?所有 1 要不是就是位於邊界上,不然就是可以抵達(dá)邊界。
解題思維:
跟
昨天的題目很像,利用廣度優(yōu)先搜尋(Breadth First Search,BFS)的精神找出每個(gè)「島嶼」(也就是聚在一起的 1 們),然後在過(guò)程中判斷有沒(méi)有超出邊界。如果沒(méi)有就代表這個(gè)島嶼所有的 1 都走不出邊界,因此不會(huì)貢獻(xiàn)任何值到答案之中;反之,則代表這個(gè)島嶼中所有的 1 都可以經(jīng)由若干步走到邊界並走出去,因此其將貢獻(xiàn)到答案之中,其值恰為該島嶼之「面積」(即這群 1 的總數(shù)量)。
此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說(shuō)明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。