695. 岛屿的最大面积
题目链接:695. 岛屿的最大面积
代码如下:
class Solution 
{
public:int maxAreaOfIsland(vector<vector<int>>& grid) {vector<vector<bool>> visited(grid.size(),vector<bool>(grid[0].size(),false));int res=0;for(int i=0;i<grid.size();i++){for(int j=0;j<grid[0].size();j++){if(!visited[i][j]&&grid[i][j]==1){count=0;// bfs(grid,visited,i,j);dfs(grid, visited, i, j);res=max(res,count);}}} return res;}
private://广度优先搜索// void bfs(vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y)// {//     queue<pair<int,int>> que;//     que.push({x,y});//     visited[x][y]=true;//     count++;//     while(!que.empty())//     {//         auto cur=que.front();//         que.pop();//         int curX=cur.first;//         int curY=cur.second;//         for(int i=0;i<4;i++)//         {//             int nextX=curX+dir[i][0];//             int nextY=curY+dir[i][1];//             if(nextX<0||nextX>=grid.size()||nextY<0||nextY>=grid[0].size())//                 continue;//             if(!visited[nextX][nextY]&&grid[nextX][nextY]==1)//             {//                 que.push({nextX,nextY});//                 visited[nextX][nextY]=true;//                 count++;//             }//         }//     }// }//深度优先搜索void dfs(vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y){if(visited[x][y]||grid[x][y]==0)//终止条件return;visited[x][y]=true;count++;for(int i=0;i<4;i++){int nextX=x+dir[i][0];int nextY=y+dir[i][1];if(nextX<0||nextX>=grid.size()||nextY<0||nextY>=grid[0].size())continue;dfs(grid,visited,nextX,nextY);}}
private:int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1}; // 四个方向int count=0;
};