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

岛屿的最大面积

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;
    }
};

全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务