classSolution{public:voiddepthfirstsearch(vector<vector<bool>>& visit,vector<vector<char>>& grid,int x,int y){if(x<0|| y<0|| x >= grid.size()|| y>=grid[0].size()|| grid[x][y]=='0'|| visit[x][y])return;
visit[x][y]=true;depthfirstsearch(visit,grid,x,y+1);depthfirstsearch(visit,grid,x+1,y);depthfirstsearch(visit,grid,x-1,y);depthfirstsearch(visit,grid,x,y-1);}intnumIslands(vector<vector<char>>& grid){
vector<vector<bool>>visit(grid.size(),vector<bool>(grid[0].size(),false));int ret =0;for(int x=0;x<grid.size();++x){for(int y=0;y<grid[0].size();++y){if(grid[x][y]=='1'&&!visit[x][y]){depthfirstsearch(visit,grid,x,y);++ret;}}}return ret;}};
代码实现(三刷自解 DAY 222 C++)
classSolution{public:voidbfs(vector<vector<char>>& grid,vector<vector<bool>>& visit,int x,int y){if(x <0|| x >= grid.size()|| y <0|| y >= grid[0].size()|| \
grid[x][y]=='0'|| visit[x][y])return;
visit[x][y]=true;bfs(grid,visit,x+1,y);bfs(grid,visit,x,y+1);bfs(grid,visit,x-1,y);bfs(grid,visit,x,y-1);return;}intnumIslands(vector<vector<char>>& grid){
vector<vector<bool>>visit(grid.size(),vector<bool>(grid[0].size(),false));int ans =0;for(int i =0;i < grid.size();++i){for(int j =0;j < grid[0].size();++j){if(grid[i][j]=='1'){if(visit[i][j]==false){++ans;bfs(grid,visit,i,j);}}}}return ans;}};
代码实现(四刷自解 DAY 233 C++)
classSolution{public:voiddepth_first_search(vector<vector<char>>& grid,int x,int y){if(x <0|| x >= grid.size()|| y <0|| y >= grid[0].size()|| grid[x][y]=='0')return;
grid[x][y]='0';depth_first_search(grid,x+1,y);depth_first_search(grid,x-1,y);depth_first_search(grid,x,y+1);depth_first_search(grid,x,y-1);return;}intnumIslands(vector<vector<char>>& grid){int row_size = grid.size(),line_size = grid[0].size();int ret =0;for(int i =0;i < row_size;++i){for(int j =0;j < line_size;++j){if(grid[i][j]=='1'){++ret;depth_first_search(grid,i,j);}}}return ret;}};
代码实现(五刷自解 DAY 271 C++)
classSolution{public:voidDepthFirstSearch(vector<vector<char>>& grid,int x,int y){if(x <0|| x >= grid.size()||
y <0|| y >= grid[0].size()||
grid[x][y]=='0'){return;}
grid[x][y]='0';DepthFirstSearch(grid, x +1, y);DepthFirstSearch(grid, x -1, y);DepthFirstSearch(grid, x, y +1);DepthFirstSearch(grid, x, y -1);return;}intnumIslands(vector<vector<char>>& grid){int ret =0;int xsize = grid.size(), ysize = grid[0].size();for(int x =0; x < xsize;++x){for(int y =0; y < ysize;++y){if(grid[x][y]=='1'){++ret;DepthFirstSearch(grid,x,y);}}}return ret;}};
代码实现(六刷自解 DAY 2 Golang)
funcDepthFirstSearch(grid [][]byte, x, y int){if x <0|| x >=len(grid)|| y <0|| y >=len(grid[0])|| grid[x][y]=='0'{return}
grid[x][y]='0'DepthFirstSearch(grid, x +1, y)DepthFirstSearch(grid, x -1, y)DepthFirstSearch(grid, x, y -1)DepthFirstSearch(grid, x, y +1)return}funcnumIslands(grid [][]byte)int{
ret :=0for x, row :=range grid {for y, num :=range row {if num =='1'{
ret++DepthFirstSearch(grid, x, y)}}}return ret
}