算法_每日一题(9.14)

简介: 算法_每日一题(9.14)

一、leetcode695. 岛屿的最大面积

给你一个大小为 m x n 的二进制矩阵 grid 。

岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid

的四个边缘都被 0(代表水)包围着。

岛屿的面积是岛上值为 1 的单元格的数目。

计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。


这里用到了dfs深度优先搜索,从某一个开始,向四周进行搜索,超过边界和值为0的返回,并将数过的值重新设定,以防二次计数。

class Solution {
    public int maxAreaOfIsland(int[][] grid) {
        //image
        int count = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                count = Math.max(count, dfs(grid, i, j));
            }
        }
        return count;
    }
    private int dfs(int[][] grid,int m ,int n) {
        int count= 1;
        if(m>=grid.length || m<0|| n>=grid[0].length||n<0 || grid[m][n] ==0 ){
            return  0 ;
        }
        grid[m][n] = 0;
        int a [] ={0,1,-1,0};
        int b [] ={1,0,0,-1};
        for(int i = 0;i<4;i++){
            int next_i = m+a[i],next_j = n+b[i];
            count += dfs(grid,next_i,next_j);
        }
        return count;
    }
}


相关文章
|
10月前
|
算法
[算法刷题题解笔记] 洛谷 P1007 独木桥 [贪心]
[算法刷题题解笔记] 洛谷 P1007 独木桥 [贪心]
算法_每日一题(9.15)
算法_每日一题(9.15)
算法_每日一题(9.12)
算法_每日一题(9.12)
算法_每日一题(9.9)
算法_每日一题(9.9)
算法_每日一题(9.13)
算法_每日一题(9.13)
算法_每日一题(9.7)
算法_每日一题(9.7)
算法_每日一题(9.6)
算法_每日一题(9.6)
|
算法 测试技术 API
算法_每日一题(9.4)
算法_每日一题(9.4)
算法_每日一题(9.8)
算法_每日一题(9.8)