classSolution{public:intnumSpecial(vector<vector<int>>& mat){int rowCounts =0;int ans =0;for(int i =0; i < mat.size(); i++){
rowCounts =0;for(int j =0; j < mat[0].size(); j++){if(!rowCounts && mat[i][j]==1){bool flag =true;for(int k = j +1; k < mat[0].size(); k++){if(mat[i][k]){
flag =false;break;}}if(!flag)break;for(int k = i -1; k >=0; k--){if(mat[k][j]){
flag =false;break;}}for(int k = i +1; k < mat.size(); k++){if(mat[k][j]){
flag =false;break;}}
ans += flag;break;}}}return ans;}};
695. 岛屿的最大面积
代码实现(自解)
classSolution{private:int m, n;intdfs(vector<vector<int>>& grid,int i,int j){int ans =1;
grid[i][j]=0;// 上if(i -1>=0&& grid[i -1][j]==1) ans +=dfs(grid, i -1, j);// 下if(i +1< m && grid[i +1][j]==1) ans +=dfs(grid, i +1, j);// 左if(j -1>=0&& grid[i][j -1]==1) ans +=dfs(grid, i, j -1);// 右if(j +1< n && grid[i][j +1]==1) ans +=dfs(grid, i, j +1);return ans;}public:intmaxAreaOfIsland(vector<vector<int>>& grid){
m = grid.size(), n = grid[0].size();int ans =0;for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid[i][j]==1){
ans =max(ans,dfs(grid, i, j));}}}return ans;}};
1254. 统计封闭岛屿的数目
代码实现(自解)
classSolution{private:int m, n;booldfs(vector<vector<int>>& grid,int i,int j){bool ans =false;
grid[i][j]=1;// 上if(i -1<0){
ans =true;}elseif(grid[i -1][j]==0){
ans =dfs(grid, i -1, j)|| ans;}// 下if(i +1>= m){
ans =true;}elseif(grid[i +1][j]==0){
ans =dfs(grid, i +1, j)|| ans;}// 左if(j -1<0){
ans =true;}elseif(grid[i][j -1]==0){
ans =dfs(grid, i, j -1)|| ans;}// 右if(j +1>= n){
ans =true;}elseif(grid[i][j +1]==0){
ans =dfs(grid, i, j +1)|| ans;}return ans;}public:intclosedIsland(vector<vector<int>>& grid){
m = grid.size(), n = grid[0].size();int ans =0;for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid[i][j]==0){if(!dfs(grid, i, j)){// cout << i << " " << j << endl;
ans++;}}}}return ans;}};