@@ -219,7 +219,7 @@ class Solution {
219
219
}
220
220
```
221
221
222
- Python:
222
+ ### Python:
223
223
224
224
``` python
225
225
# 版本一
@@ -278,8 +278,91 @@ class Solution:
278
278
279
279
return result
280
280
```
281
+ ### JavaScript
281
282
282
- Rust:
283
+ ``` javascript
284
+ var numIslands = function (grid ) {
285
+ let dir = [[0 , 1 ], [1 , 0 ], [- 1 , 0 ], [0 , - 1 ]]; // 四个方向
286
+
287
+ let dfs = (grid , visited , x , y ) => {
288
+ for (let i = 0 ; i < 4 ; i++ ) {
289
+ let nextX = x + dir[i][0 ]
290
+ let nextY = y + dir[i][1 ]
291
+ if (nextX < 0 || nextX >= grid .length || nextY < 0 || nextY >= grid[0 ].length )
292
+ continue ;
293
+ if (! visited[nextX][nextY] && grid[nextX][nextY] === " 1" ) {
294
+ visited[nextX][nextY] = true
295
+ dfs (grid,visited,nextX,nextY)
296
+ }
297
+ }
298
+ }
299
+ let visited = new Array (grid .length ).fill ().map (() => Array (grid[0 ].length ).fill (false ))
300
+
301
+ let res = 0
302
+ for (let i = 0 ; i < grid .length ; i++ ) {
303
+ for (let j = 0 ; j < grid[i].length ; j++ ) {
304
+ if (! visited[i][j] && grid[i][j] === " 1" ) {
305
+ ++ res;
306
+ visited[i][j] = true ;
307
+ dfs (grid, visited, i, j);
308
+ }
309
+ }
310
+ }
311
+ return res
312
+ };
313
+ ```
314
+
315
+ ### Go
316
+
317
+ ``` go
318
+ func numIslands (grid [][]byte ) int {
319
+ // 用1标记已访问
320
+ visited := make ([][]int , len (grid))
321
+ for i := 0 ; i < len (visited); i++{
322
+ visited[i] = make ([]int , len (grid[0 ]))
323
+ }
324
+
325
+ var bfs func (x, y int )
326
+ bfs = func (x, y int ){
327
+ stack := make ([][]int , 0 )
328
+ stack = append (stack, []int {x, y})
329
+ moveX := []int {1 , -1 , 0 , 0 }
330
+ moveY := []int {0 , 0 , 1 , -1 }
331
+
332
+ for len (stack) != 0 {
333
+ node := stack[len (stack) - 1 ]
334
+ stack = stack[:len (stack) - 1 ]
335
+
336
+ for i := 0 ; i < 4 ; i++{
337
+ dx := moveX[i] + node[0 ]
338
+ dy := moveY[i] + node[1 ]
339
+ if dx < 0 || dx >= len (grid) || dy < 0 || dy >= len (grid[0 ]) || visited[dx][dy] == 1 {
340
+ continue
341
+ }
342
+ visited[dx][dy] = 1
343
+ if grid[dx][dy] == ' 1' {
344
+ stack = append (stack, []int {dx,dy})
345
+ }
346
+ }
347
+ }
348
+ }
349
+
350
+ result := 0
351
+ for i := 0 ; i < len (grid); i++{
352
+ for j := 0 ; j < len (grid[0 ]); j++{
353
+ if visited[i][j] == 0 && grid[i][j] == ' 1' {
354
+ bfs (i, j)
355
+ visited[i][j] = 1
356
+ result++
357
+ }
358
+ }
359
+ }
360
+
361
+ return result
362
+ }
363
+ ```
364
+
365
+ ### Rust:
283
366
284
367
285
368
``` rust
0 commit comments