|
| 1 | +# JavaScript Number Of Islands |
| 2 | + |
| 3 | +## Challenge: |
| 4 | + |
| 5 | +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. |
| 6 | + |
| 7 | +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. |
| 8 | + |
| 9 | +### 1<sup>st</sup> Example: |
| 10 | + |
| 11 | +`Input: grid = [` |
| 12 | +<br/> |
| 13 | +`["1","1","1","1","0"],` |
| 14 | +<br/> |
| 15 | +`["1","1","0","1","0"],` |
| 16 | +<br/> |
| 17 | +`["1","1","0","0","0"],` |
| 18 | +<br/> |
| 19 | +`["0","0","0","0","0"]` |
| 20 | +<br/> |
| 21 | +`]` |
| 22 | +<br/> |
| 23 | +`Output: 1` |
| 24 | + |
| 25 | +### 2<sup>nd</sup> Example: |
| 26 | + |
| 27 | +`Input: grid = [` |
| 28 | +<br/> |
| 29 | +`["1","1","0","0","0"],` |
| 30 | +<br/> |
| 31 | +`["1","1","0","0","0"],` |
| 32 | +<br/> |
| 33 | +`["0","0","1","0","0"],` |
| 34 | +<br/> |
| 35 | +`["0","0","0","1","1"]` |
| 36 | +<br/> |
| 37 | +`]` |
| 38 | +<br/> |
| 39 | +`Output: 3` |
| 40 | + |
| 41 | +### Constraints: |
| 42 | + |
| 43 | +`m == grid.length` |
| 44 | +<br/> |
| 45 | +`n == grid[i].length` |
| 46 | +<br/> |
| 47 | +`1 <= m, n <= 300` |
| 48 | +<br/> |
| 49 | +`grid[i][j]` is `'0'` or `'1'`. |
| 50 | + |
| 51 | +## Solution: |
| 52 | + |
| 53 | +`const numIslands = (grid) => {` |
| 54 | +<br/> |
| 55 | + `let count = 0;` |
| 56 | +<br/> |
| 57 | +<br/> |
| 58 | + `for (let i = 0; i < grid.length; i++) {` |
| 59 | +<br/> |
| 60 | + `for (let j = 0; j < grid[0].length; j++) {` |
| 61 | +<br/> |
| 62 | + `if (grid[i][j] === '1') {` |
| 63 | +<br/> |
| 64 | + `count++;` |
| 65 | +<br/> |
| 66 | + `dfs(grid, i,j);` |
| 67 | +<br/> |
| 68 | + `}` |
| 69 | +<br/> |
| 70 | + `}` |
| 71 | +<br/> |
| 72 | + `}` |
| 73 | +<br/> |
| 74 | +<br/> |
| 75 | + `return count;` |
| 76 | +<br/> |
| 77 | +`};` |
| 78 | +<br/> |
| 79 | +<br/> |
| 80 | +`const dfs = (grid, row, col) => {` |
| 81 | +<br/> |
| 82 | + `if (row < 0 || row >= grid.length || col < 0 || col >= grid[0].length) {` |
| 83 | +<br/> |
| 84 | + `return;` |
| 85 | +<br/> |
| 86 | + `}` |
| 87 | +<br/> |
| 88 | +<br/> |
| 89 | + `const value = grid[row][col];` |
| 90 | +<br/> |
| 91 | +<br/> |
| 92 | + `if (value === '1') {` |
| 93 | +<br/> |
| 94 | + `grid[row][col] = '#';` |
| 95 | +<br/> |
| 96 | + `dfs(grid, row + 1, col);` |
| 97 | +<br/> |
| 98 | + `dfs(grid, row - 1, col);` |
| 99 | +<br/> |
| 100 | + `dfs(grid, row, col + 1);` |
| 101 | +<br/> |
| 102 | + `dfs(grid, row, col - 1);` |
| 103 | +<br/> |
| 104 | + `}` |
| 105 | +<br/> |
| 106 | +`};` |
| 107 | +<br/> |
| 108 | +<br/> |
0 commit comments