代码语言:javascript复制给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。
class Solution {
public int islandPerimeter(int[][] grid) {
/**
dfs 遇到水 1 遇到边界 1
*/
int res=0;
for(int i=0;i<grid.length;i ){
for(int j=0;j<grid[0].length;j ){
if(grid[i][j]==1){
res=Math.max(res,dfs(grid,i,j));
}
}
}
return res;
}
public int dfs(int [][] grid,int row,int col){
//遇到边界 1
if(row<0||col<0||row>=grid.length||col>=grid[0].length){
return 1;
}
//遇到水 1
if(grid[row][col]==0){
return 1;
}
//访问过 0
if(grid[row][col]==2){
return 0;
}
grid[row][col]=2;//标记访问过
int num=0;
num =dfs(grid,row 1,col);
num =dfs(grid,row-1,col);
num =dfs(grid,row,col-1);
num =dfs(grid,row,col 1);
return num;
}
}