classSolution{public:
vector<vector<int>>generateMatrix(int n){int left =0, right = n -1;int up =0, down = n -1;
vector<vector<int>>res(n,vector<int>(n,0));int num =1, tar = n * n;while(num <= tar){for(int i = left; i <= right; i++) res[up][i]= num++;
up++;for(int i = up; i <= down; i++) res[i][right]= num++;
right--;for(int i = right; i >= left; i--) res[down][i]= num++;
down--;for(int i = down; i >= up; i--) res[i][left]= num++;
left++;}return res;}};
classSolution{private:intdfs(vector<vector<int>>& grid,int i,int j){if(grid[i][j]==0)return0;
grid[i][j]=0;int res =1;int m = grid.size();int n = grid[0].size();//向上统计if(i -1>=0&& grid[i -1][j]==1) res +=dfs(grid, i -1, j);//向下统计if(i +1<= m -1&& grid[i+1][j]==1) res +=dfs(grid, i +1, j);//向左统计if(j -1>=0&& grid[i][j-1]==1) res +=dfs(grid, i, j -1);//向右统计if(j +1<= n -1&& grid[i][j+1]==1) res +=dfs(grid, i, j+1);return res;}public:intmaxAreaOfIsland(vector<vector<int>>& grid){int res =0;int m = grid.size();int n = grid[0].size();for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid[i][j]==1){
res = std::max(res,dfs(grid, i, j));}}}return res;}};