题解 | #岛屿的最大面积#
岛屿的最大面积
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;
}
};

查看17道真题和解析