leetcode 統計封閉島嶼的數目

2021-09-29 12:46:34 字數 2116 閱讀 3125

有乙個二維矩陣 gri

dgrid

grid

,每個位置要麼是陸地(記號為 0 )要麼是水域(記號為 1 )。

我們從一塊陸地出發,每次可以往上下左右 4 個方向相鄰區域走,能走到的所有陸地區域,我們將其稱為一座「島嶼」。

如果一座島嶼 完全 由水域包圍,即陸地邊緣上下左右所有相鄰區域都是水域,那麼我們將其稱為 「封閉島嶼」。

請返回封閉島嶼的數目。

示例 1:

輸入:grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]

輸出:2

解釋:灰色區域的島嶼是封閉島嶼,因為這座島嶼完全被水域包圍(即被 1 區域包圍)。

輸入:grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]

輸出:1

示例 3:

輸入:grid = [[1,1,1,1,1,1,1],

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

[1,0,0,0,0,0,1],

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

[1,0,1,1,1,0,1],

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

[1,0,1,0,1,0,1],

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

[1,0,1,1,1,0,1],

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

[1,0,0,0,0,0,1],

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

\space

[1,1,1,1,1,1,1]]

輸出:2

class

solution

; # 建立乙個陣列,用於行進行上下左右的位移

int ll[4]

=; # 建立乙個陣列,用於列上下左右的位移

void

dfs(vector

int>>

& g,

int i,

int j,

int& flag) # 深度遍歷函式

}}intclosedisland

(vector

int>>

& g)}}

return sum;}}

;

LeetCode統計封閉島嶼數

題目對於封閉島嶼的要求是上下左右所有相鄰區域都是水域,所以首先排除處於矩陣邊框的陸地,設定乙個flag,利用深搜判斷陸地周圍是否是陸地,如果不是的話結束本次搜尋。封閉島嶼數加一 ac 如下 class solution if gird i j 0 return gird i j 1 標記已經走過的區...

統計封閉島嶼的數目

有乙個二維矩陣 grid 每個位置要麼是陸地 記號為 0 要麼是水域 記號為 1 我們從一塊陸地出發,每次可以往上下左右 4 個方向相鄰區域走,能走到的所有陸地區域,我們將其稱為一座 島嶼 如果一座島嶼 完全 由水域包圍,即陸地邊緣上下左右所有相鄰區域都是水域,那麼我們將其稱為 封閉島嶼 請返回封閉...

1254 統計封閉島嶼的數目

深度優先搜尋 dfs 的題。因為邊界的陸地不算島嶼,所以搜尋的時候把邊界的陸地及與邊界相連的陸地去掉。然後對陣列進行遍歷,求出島嶼數即可。方案一 public int closedisland int grid for int j 0 j grid 0 length j 尋找島嶼數量 int isl...