这个题使用深度优先搜索就可以直接遍历
DFS递归方法:
class Solution { public: vector<vector<int>> dirs={{-1,0},{0,-1},{0,1},{1,0}}; int maxAreaOfIsland(vector<vector<int>>& grid) { int res=0; int m=grid.size(),n=grid[0].size(); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(grid[i][j]==0) continue; int cnt=0; dfs(grid,cnt,i,j); res=res>cnt?res:cnt; } } return res; } void dfs(vector<vector<int>> &grid,int &cnt,int i,int j){ int m=grid.size(),n=grid[0].size(); if(i<0 || i>=m ||j<0 ||j>=n || grid[i][j]!=1) return; cnt++; grid[i][j]=-1; for(auto dir:dirs){ dfs(grid,cnt,i+dir[0],j+dir[1]); } } };
BFS迭代方法:使用queue