题目地址:
https://leetcode.com/problems/number-of-islands/
给定一个二维矩阵,只含 0 0 0和 1 1 1。连成一片 1 1 1可以看成一个岛屿。问一共多少个岛屿。
可以DFS。代码如下:
class Solution {
public:
int d[5] = {-1, 0, 1, 0, -1};
int numIslands(vector<vector<char>>& g) {
int res = 0;
for (int i = 0; i < g.size(); i++)
for (int j = 0; j < g[0].size(); j++) {
if (g[i][j] == '1') {
dfs(i, j, g);
res++;
}
}
return res;
}
void dfs(int x, int y, auto& g) {
g[x][y] = '0';
for (int k = 0; k < 4; k++) {
int nx = x + d[k], ny = y + d[k + 1];
if (0 <= nx && nx < g.size() && 0 <= ny && ny < g[0].size() &&
g[nx][ny] == '1')
dfs(nx, ny, g);
}
}
};
时空复杂度 O ( m n ) O(mn) O(mn)。