Files
obsidian/АиСД/Задачи/LeetCode/Number of Islands.md
T
roma-dxunvrs f57762fd3b Init
2026-09-03 21:40:46 +03:00

25 lines
963 B
Markdown

Leetcode #200 | #Medium | [[Графы]] | [[Матрица]] | [[DFS]]
## Идея
DFS по матрице, если встретили 1, то запускаем dfs, в рекурсии обходим всех соседей и посещенные 1 закрашиваем в # чтобы не было повторов
## [[Big-O]]
- Время ```O(MN)```
- Память ```O(MN)```
## Код
```Java
class Solution {
public int numIslands(char[][] grid) {
int res = 0;
for (int r = 0; r < grid.length; r++) {
for (int c = 0; c < grid[0].length; c++) {
if (grid[r][c] == '1') { res++; dfs(grid, r, c); }
}
}
return res;
}
private void dfs(char[][] g, int r, int c) {
if (r < 0 || r >= g.length || c < 0 || c >= g[0].length || g[r][c] == '0') return;
g[r][c] = '0';
dfs(g, r + 1, c); dfs(g, r - 1, c); dfs(g, r, c + 1); dfs(g, r, c - 1);
}
}
```