695. 岛屿的最大面积

2022-06-13  本文已影响0人  justonemoretry
image.png

解法

思路和岛屿个数类似,只不过这种需要递归里面返回1的个数,也是上下左右进行深度优先遍历,把遇到的1改成0。

class Solution {
   
    public int maxAreaOfIsland(int[][] grid) {
        if (grid.length == 0) {
            return 0;
        }
        int row = grid.length;
        int col = grid[0].length;
        int maxCount = 0;
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (grid[i][j] == 1) {
                    maxCount = Math.max(dfs(grid, i, j), maxCount);
                }
            }
        }
        return maxCount;
    }

    private int dfs(int[][] grid, int i, int j) {
        if (i < 0 || i >= grid.length) {
            return 0;
        }
        if (j < 0 || j >= grid[0].length) {
            return 0;
        }
        // 遇到为1的,改成0
        if (grid[i][j] == 1) {
            int ans = 1;
            grid[i][j] = 0;
            int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
            for (int[] dir : dirs) {
                ans += dfs(grid, i + dir[0], j + dir[1]);
            }
            return ans;
        }
        return 0;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读