题解 | #岛屿的最大面积#

岛屿的最大面积

https://www.nowcoder.com/practice/5568943d3a08403f932a5e54ec3ece71

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param grid int整型二维数组
     * @return int整型
     */
    public int maxAreaIsland (int[][] grid) {
        //遍历所有的岛屿
        int max = 0;
        
        for (int i = 0 ;  i < grid.length ; i ++) {
            for  ( int j = 0 ;  j  < grid[0].length; j ++) {
                if (grid[i][j] == 1) {
                    //dif深度优先搜索,记录最大的max
                    max = Math.max(dif(grid, i, j), max) ;
                }
            }
        }
        return max;
    }

	//dif深度优先搜索,分4个方向搜索
    public int dif(int[][] grid, int i, int j) {
		//终止条件,说明其中i,j 位置不是一 则直接返回
        if ( i < 0 || j < 0 || i >= grid.length || j >= grid[0].length ||
                grid[i][j] == 0 ) {
            return 0 ;
        }
            //保证之后再访问的时候,面积不增加
        grid[i][j] = 0;
        return dif(grid, i - 1, j)  + dif(grid, i + 1, j) + dif(grid, i,
                j + 1) + dif(grid, i, j - 1) +1;

    }
}

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务