问题描述 Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return 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:
1 2 3 4 5 6 7 Input: grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ] Output: 1
Example 2:
1 2 3 4 5 6 7 Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] Output: 3
Constraints:
m == grid.length
n == grid[i].length
1 <= m, n <= 300
grid[i][j] is '0' or '1'.
解答 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 const numIslands = function (grid ) { if (grid === null || grid.length === 0 ) { return 0 } let count = 0 const row = grid.length const col = grid[0 ].length const dfs = (grid, i, j ) => { if (i < 0 || i > row - 1 || j < 0 || j > col - 1 || grid[i][j] !== '1' ) { return } grid[i][j] = '2' dfs(grid, i - 1 , j) dfs(grid, i + 1 , j) dfs(grid, i, j - 1 ) dfs(grid, i, j + 1 ) } for (let i = 0 ; i < row; i++) { for (let j = 0 ; j < col; j++) { if (grid[i][j] === '1' ) { count++ dfs(grid, i, j) } } } return count }