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:
11110
11010
11000
00000
Output: 1
Example 2:
Input:
11000
11000
00100
00011
Output: 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); // 搜索上边
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。