func numIslands(_ g: [[Character]]) -> Int {
var grid = g
var count = 0
if grid.count == 0 {
return 0
}
let Rows = grid.count
let Cols = grid.first?.count ?? 0
for i in 0..<Rows {
for j in 0..<Cols {
if grid[i][j] == "1" {
count += 1
renderOneToZero(&grid,Rows: Rows,Cols: Cols,i: i,j: j)
}
}
}
return count
}
func renderOneToZero(_ grid: inout [[Character]], Rows:Int,Cols:Int, i:Int, j:Int) {
if i >= Rows || j >= Cols || i < 0 || j < 0 {
return
}
if grid[i][j] == "1" {
grid[i][j] = "0"
//把 上 左 下 右
//左
renderOneToZero(&grid, Rows: Rows, Cols: Cols, i: i, j: j-1)
//右
renderOneToZero(&grid, Rows: Rows, Cols: Cols, i: i , j: j + 1)
//上
renderOneToZero(&grid, Rows: Rows, Cols: Cols, i: i - 1 , j: j)
//下面
renderOneToZero(&grid, Rows: Rows, Cols: Cols, i: i + 1 , j: j)
}
}
展开