Skip to content

Commit 89854d4

Browse files
committed
Add JavaScriptNumberOfIslands.md
1 parent a48a570 commit 89854d4

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

JavaScriptNumberOfIslands.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
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+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`let count = 0;`
56+
<br/>
57+
<br/>
58+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`for (let i = 0; i < grid.length; i++) {`
59+
<br/>
60+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`for (let j = 0; j < grid[0].length; j++) {`
61+
<br/>
62+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`if (grid[i][j] === '1') {`
63+
<br/>
64+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`count++;`
65+
<br/>
66+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`dfs(grid, i,j);`
67+
<br/>
68+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
69+
<br/>
70+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
71+
<br/>
72+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
73+
<br/>
74+
<br/>
75+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`return count;`
76+
<br/>
77+
`};`
78+
<br/>
79+
<br/>
80+
`const dfs = (grid, row, col) => {`
81+
<br/>
82+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`if (row < 0 || row >= grid.length || col < 0 || col >= grid[0].length) {`
83+
<br/>
84+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`return;`
85+
<br/>
86+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
87+
<br/>
88+
<br/>
89+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`const value = grid[row][col];`
90+
<br/>
91+
<br/>
92+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`if (value === '1') {`
93+
<br/>
94+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`grid[row][col] = '#';`
95+
<br/>
96+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`dfs(grid, row + 1, col);`
97+
<br/>
98+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`dfs(grid, row - 1, col);`
99+
<br/>
100+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`dfs(grid, row, col + 1);`
101+
<br/>
102+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`dfs(grid, row, col - 1);`
103+
<br/>
104+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`
105+
<br/>
106+
`};`
107+
<br/>
108+
<br/>

0 commit comments

Comments
 (0)