TGViewer
Swift | LeetCode Swift | LeetCode @easy_swift_task · 1.3K subscribers
Post #1627 54
Задача: 200. Number of Islands
Сложность: medium

Дана двумерная бинарная сетка размером m x n, представляющая карту из '1' (земля) и '0' (вода). Верните количество островов.

Остров окружён водой и образуется путём соединения соседних земель горизонтально или вертикально. Можно предположить, что все четыре края сетки окружены водой.

Пример:
Input: grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
Output: 1


👨‍💻 Алгоритм:

1⃣Линейно просканируйте двумерную карту, если узел содержит '1', то это корневой узел, который запускает поиск в глубину (DFS).

2⃣Во время выполнения DFS каждый посещённый узел следует установить в '0', чтобы пометить его как посещённый.

3⃣Подсчитайте количество корневых узлов, запускающих DFS. Это количество будет равно количеству островов, так как каждый DFS, начинающийся с какого-либо корня, идентифицирует остров.

😎 Решение:
class Solution {
func dfs(_ grid: inout [[Character]], _ r: Int, _ c: Int) {
let nr = grid.count
let nc = grid[0].count

if r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == "0" {
return
}

grid[r][c] = "0"
dfs(&grid, r - 1, c)
dfs(&grid, r + 1, c)
dfs(&grid, r, c - 1)
dfs(&grid, r, c + 1)
}

func numIslands(_ grid: [[Character]]) -> Int {
var grid = grid
if grid.isEmpty {
return 0
}

let nr = grid.count
let nc = grid[0].count
var numIslands = 0

for r in 0..<nr {
for c in 0..<nc {
if grid[r][c] == "1" {
numIslands += 1
dfs(&grid, r, c)
}
}
}

return numIslands
}
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_swift_task
  1. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для iOS разработчика, которые нигде больше не публ…
  2. Oct 4, 2026Задача: 523. Continuous Subarray Sum Сложность: medium Дан целочисленный массив nums и цел…
  3. Oct 4, 2026Задача: 1329. Sort the Matrix Diagonally Сложность: medium Диагональ матрицы — это диагона…
  4. Oct 2, 2026Задача: 246. Strobogrammatic Number Сложность: easy Дана строка num, представляющая собой…
  5. Sep 29, 2026Задача: 644. Maximum Average Subarray II Сложность: hard Вам дан целочисленный массив nums…
  6. Sep 26, 2026Задача: 1493. Longest Subarray of 1's After Deleting One Element Сложность: medium Дан бин…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →