200.M 岛屿数量

Problem: 200. 岛屿数量

[TOC]

思路

做深度优先搜索,每次把访问到的元素的值从1改为0,然后深度优先搜索的次数即为岛屿的数量。

Code

func numIslands(grid [][]byte) int {
	if len(grid) == 0 {
		return 0
	}
	rows := len(grid)
	cols := len(grid[0])

	numsOfDfs := 0
	for i := 0; i < rows; i++ {
		for j := 0; j < cols; j++ {
			if grid[i][j] == '1' {
				numsOfDfs++
				dfs(grid, i, j)
			}
		}
	}

	return numsOfDfs
}

func dfs(grid [][]byte, i int, j int) {
	if i < 0 || i >= len(grid) || j < 0 || j >= len(grid[0]) {
		return
	}

	if grid[i][j] == '0' {
		return
	}

	grid[i][j] = '0'
	dfs(grid, i-1, j)
	dfs(grid, i+1, j)
	dfs(grid, i, j-1)
	dfs(grid, i, j+1)
}

Last updated

Was this helpful?