class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
if(grid.size()==0) return 0;
int res=0;
vector<int> direc={-1, 0, 1, 0, -1};
stack<pair<int,int>> rcd;
for(int i=0; i<grid.size(); i++)
for(int j=0; j<grid[0].size(); j++)
if(grid[i][j])
{
grid[i][j]=0;
rcd.push(make_pair(i,j));
int area=1;
while(!rcd.empty()){
int i=rcd.top().first, j=rcd.top().second;
rcd.pop();
for(int d=0; d<4; d++)
{
int r=direc[d]+i, c=direc[d+1]+j;
if(r<grid.size()&&r>=0 && c>=0 && c<grid[0].size() &&grid[r][c]==1)
{
grid[r][c]=0;
area++;
rcd.push(make_pair(r, c));
}
}
}
res=max(res,area);
}
return res;
}
};
使用迭代栈而非递归方式解决此问题