给定一个由 '1'
(陆地)和 '0'
(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入: 11110 11010 11000 00000 输出: 1
class Solution(object): def numIslands(self, grid): row = len(grid) if row == 0 or grid == None: return 0 col = len(grid[0]) count = 0 for i in range(row): for j in range(col): if grid[i][j] == 1: self.dfsFind(grid, i, j, row, col) count += 1 return count def dfsFind(self, grid, i, j, row, col): if grid[i][j] == 1: grid[i][j] = 0 if i - 1 >= 0: grid = self.dfsFind(grid, i - 1, j, row, col) if i + 1 < row: grid = self.dfsFind(grid, i + 1, j, row, col) if j - 1 >= -0: grid = self.dfsFind(grid, i, j - 1, row, col) if j + 1 < col: grid = self.dfsFind(grid, i, j + 1, row, col) return grid