一、广度优先搜索 (BFS)
1.学习视频 BFS学习视频简单易懂b站麦克老师讲算法
2.原理
二、深度优先搜索 (DFS)
1、学习视频麦克老师讲算法DFS
2、原理
三、例题leetcode200岛屿数量
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
示例 1:
输入:grid = [
[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
]
输出:1
示例 2:
输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 300
grid[i][j] 的值为 ‘0’ 或 ‘1’
解法一:深度优先算法
var numIslands = function(grid) {
//px/py代表四个方向
var px = [-1, 1, 0, 0];
var py = [0, 0, -1, 1];
var dfs = function (sr, sc) {
if ((sr > -1 && sc > -1) && (sr < grid.length && sc < grid[0].length)) {
//grid[sr][sc]某座岛屿的第一块陆地,将它沉没
grid[sr][sc] =