Q: Number of Islands
Given a 2d grid map of '1's (land) and '0's (water), count 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.
Example 1:
Input:
11110110101100000000Output: 1
Example 2:
Input:
11000110000010000011Output: 3
解题思路
标零法
对这个矩阵进行循环访问每一个点;
当这个点等于 1,岛屿数量 count++,与其同时用 dfs 算法(depth first search)访问周围的其他点,进行同样的操作;且将访问过且等于 1 的点标记为零。Solutions (JavaScript 版本)
/** * @param {character[][]} grid * @return {number} */var numIslands = function(grid) { var count = 0 // 岛屿数量 if (grid.length === 0) return count for (var i = 0; i < grid.length; i++) { for(var j = 0; j < grid[0].length; j++) { if (grid[i][j] === '1') { dfsSearch(grid, i, j) count++ } } } return count};function dfsSearch(grid, i, j) { if(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length) return; if(grid[i][j] === '1'){ grid[i][j] = '0'; dfsSearch(grid, i + 1, j); // 搜索右边 dfsSearch(grid, i - 1, j); // 搜索左边 dfsSearch(grid, i, j + 1); // 搜索下边 dfsSearch(grid, i, j - 1); // 搜索上边 }}