463. 岛屿的周长

2021-06-22 22:00:58 浏览数 (1)

给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

代码语言:javascript复制
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;

    }
}

0 人点赞