算法-DFS-岛屿的最大面积

在这里插入图片描述

class Solution {
    
    
    int count = 0;
    int res = 0;
    public int maxAreaOfIsland(int[][] grid) {
    
    

        for(int r = 0; r < grid.length; r++) {
    
    
            for(int c = 0; c < grid[0].length; c++) {
    
    
                if(grid[r][c] == 1) {
    
    
                    dfs(grid, r, c);//把某一座岛屿遍历了一次
                    res = Math.max(res, count);
                    count = 0;//在遍历下一次岛屿是要将count清0
                }
            }

            
        }
        return res;

    }

    public void dfs(int[][] grid, int r, int c) {
    
    
        if(!(0 <= r && r < grid.length && 0 <= c && c < grid[0].length)) {
    
    
            return;
        }

        if(grid[r][c] == 0) {
    
    
            return;
        }

        if(grid[r][c] == 2) {
    
    
            return;
        }
        grid[r][c] = 2;
        count++;//说明该处是陆地 +1

        dfs(grid, r + 1, c);
        dfs(grid, r - 1, c);
        dfs(grid, r, c + 1);
        dfs(grid, r, c - 1);

        

    }
}

猜你喜欢

转载自blog.csdn.net/qq_45100361/article/details/113116039