题目:
Given an m x n 2d grid map of '1’s (land) and '0’s (water), return the number of islands.
An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
这道题是一个简单的图的搜索,只需要将访问过的点标记一下,然后统计一下一共有多少点就知道了。
class Solution {
public:
void search(vector<vector<char>>& grid, int i, int j){
if(i<0 or i >=grid.size() or j < 0 or j >= grid[0].size())return;
if(grid[i][j] == '1'){
grid[i][j] = '0';
search(grid, i-1, j);
search(grid, i+1, j);
search(grid, i, j-1);
search(grid, i, j+1);
}
}
int numIslands(vector<vector<char>>& grid) {
int count = 0;
for(auto i=0; i< grid.size(); i++)
for(auto j=0; j<grid[0].size();j++){
if(grid[i][j] == '1'){
count++;
search(grid, i, j);
}
}
return count;
}
};
本文介绍了一个简单的图搜索算法实现,用于计算二维地图中由'1'(陆地)和'0'(水域)构成的岛屿数量。通过递归深度优先搜索的方式遍历地图,将已访问过的陆地标记为水域,最终统计出岛屿总数。

1070

被折叠的 条评论
为什么被折叠?



