class Solution { func numIslands(_ grid: [[Character]]) -> Int { var grid = grid let nr = grid.count if nr == 0 { return 0 } let nc = grid[0].count var numIslands = 0

    for r in 0..<nr {
        for c in 0..<nc {
            if grid[r][c] == "1" {
                numIslands += 1
                grid[r][c] = "0"
                var queue = [(r, c)]
                
                while !queue.isEmpty {
                    let (row, col) = queue.removeFirst()
                    
                    if row - 1 >= 0 && grid[row-1][col] == "1" {
                        queue.append((row-1, col))
                        grid[row-1][col] = "0"
                    }
                    
                    if row + 1 < nr && grid[row+1][col] == "1" {
                        queue.append((row+1, col))
                        grid[row+1][col] = "0"
                    }
                    
                    if col - 1 >= 0 && grid[row][col-1] == "1" {
                        queue.append((row, col-1))
                        grid[row][col-1] = "0"
                    }
                    
                    if col + 1 < nc && grid[row][col+1] == "1" {
                        queue.append((row, col+1))
                        grid[row][col+1] = "0"
                    }
                }
            }
        }
    }
    
    return numIslands
}
class Solution public int numIslandsvectorvectorchar& grid int nr = gridsize; if !nr return 0; int nc = grid0size; int num_islands = 0; for int r = 0; r nr; r++

原文地址: https://www.cveoy.top/t/topic/itUV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录