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

岛屿的最大面积

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

#include <vector>
class Solution {
    const vector<vector<int>> direction{{-1,0},{1,0},{0,-1},{0,1}};//定义上下左右四个方向
public:
    int CurPosArea(vector<vector<int> >& grid,int x,int y)
    {
      // 如果索引超出范围,就返回0 
	  if(x<0||y<0||x>=grid.size()||y>=grid[0].size()||grid[x][y]==0)
            return 0;
        grid[x][y]=0; //将当前岛屿面积置0,防止递归过程中重复计算当前岛屿面积
        int area=1;   //当前岛屿面积初始化为1,因为包含它自己本身的面积
      //计算相邻岛屿面积  
	  for(auto dir:direction)
        {
            int x1=dir[0]+x;
            int y1=dir[1]+y;
            area+=CurPosArea(grid, x1, y1);
        }
        return area;
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param grid int整型vector<vector<>> 
     * @return int整型
     */
    int maxAreaIsland(vector<vector<int> >& grid) {
        // write code here
        int n=grid.size();
        int m=grid[0].size();
        if(n==0||m==0) return 0;
        int maxarea=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(grid[i][j]==1)
                {
                    maxarea=max(maxarea,CurPosArea(grid,i,j));
                }
            }
        }
        return maxarea;
    }
};

全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务