深度優先搜尋(dfs)的題。因為邊界的陸地不算島嶼,所以搜尋的時候把邊界的陸地及與邊界相連的陸地去掉。然後對陣列進行遍歷,求出島嶼數即可。
方案一:
public int closedisland(int grid)
for (int j = 0; j < grid[0].length; j++)
//尋找島嶼數量
int islandnum = 0;
for(int i = 0; i < grid.length; i++)
for (int j = 0; j < grid[i].length; j++)
if (grid[i][j] == 0)
return islandnum;
}private void searchisland (int grid, int x, int y)
方案二:
//判斷是否與邊界相連的標記
boolean flag;
//位移方向
int direction = , , , };
public int closedisland(int grid)
return islandnum;
}private void searchisland (int grid, int x, int y)
if(grid[x][y] == 1)
return;
grid[x][y] = 1;
for(int dir : direction)
searchisland(grid, x + dir[0], y + dir[1]);
}
1254 統計封閉島嶼的數目(dfs)
1.問題描述 有乙個二維矩陣 grid 每個位置要麼是陸地 記號為 0 要麼是水域 記號為 1 我們從一塊陸地出發,每次可以往上下左右 4 個方向相鄰區域走,能走到的所有陸地區域,我們將其稱為一座 島嶼 如果一座島嶼 完全 由水域包圍,即陸地邊緣上下左右所有相鄰區域都是水域,那麼我們將其稱為 封閉島...
統計封閉島嶼的數目
有乙個二維矩陣 grid 每個位置要麼是陸地 記號為 0 要麼是水域 記號為 1 我們從一塊陸地出發,每次可以往上下左右 4 個方向相鄰區域走,能走到的所有陸地區域,我們將其稱為一座 島嶼 如果一座島嶼 完全 由水域包圍,即陸地邊緣上下左右所有相鄰區域都是水域,那麼我們將其稱為 封閉島嶼 請返回封閉...
leetcode 統計封閉島嶼的數目
有乙個二維矩陣 gri dgrid grid 每個位置要麼是陸地 記號為 0 要麼是水域 記號為 1 我們從一塊陸地出發,每次可以往上下左右 4 個方向相鄰區域走,能走到的所有陸地區域,我們將其稱為一座 島嶼 如果一座島嶼 完全 由水域包圍,即陸地邊緣上下左右所有相鄰區域都是水域,那麼我們將其稱為 ...