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