mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
Merge pull request #2767 from Camille0512/patch-1
Update 0099.岛屿的数量深搜.md Add Scala code to solve counting islands probl…
This commit is contained in:
@ -412,6 +412,46 @@ const dfs = (graph, visited, x, y) => {
|
|||||||
### Swift
|
### Swift
|
||||||
|
|
||||||
### Scala
|
### Scala
|
||||||
|
```scala
|
||||||
|
import util.control.Breaks._
|
||||||
|
|
||||||
|
object Solution {
|
||||||
|
val dir = List((-1,0), (0,-1), (1,0), (0,1)) // 四个方向
|
||||||
|
|
||||||
|
def dfs(grid: Array[Array[Char]], visited: Array[Array[Boolean]], row: Int, col: Int): Unit = {
|
||||||
|
(0 until 4).map { x =>
|
||||||
|
val nextR = row + dir(x)(0)
|
||||||
|
val nextC = col + dir(x)(1)
|
||||||
|
breakable {
|
||||||
|
if(nextR < 0 || nextR >= grid.length || nextC < 0 || nextC >= grid(0).length) break
|
||||||
|
if (!visited(nextR)(nextC) && grid(nextR)(nextC) == '1') {
|
||||||
|
visited(nextR)(nextC) = true // 经过就记录
|
||||||
|
dfs(grid, visited, nextR, nextC)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def numIslands(grid: Array[Array[Char]]): Int = {
|
||||||
|
val row = grid.length
|
||||||
|
val col = grid(0).length
|
||||||
|
var visited = Array.fill(row)(Array.fill(col)(false))
|
||||||
|
var counter = 0
|
||||||
|
|
||||||
|
(0 until row).map{ r =>
|
||||||
|
(0 until col).map{ c =>
|
||||||
|
if (!visited(r)(c) && grid(r)(c) == '1') {
|
||||||
|
visited(r)(c) = true // 经过就记录
|
||||||
|
dfs(grid, visited, r, c)
|
||||||
|
counter += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
counter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### C#
|
### C#
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user