200.岛屿的个数(python)

题目描述
评论 (68)
题解
提交记录
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000

输出: 1
示例 2:

输入:
11000
11000
00100
00011

输出: 3

思路:四个方向dfs就好了相当于求联通块的个数

class Solution:
    def numIslands(self, grid: 'List[List[str]]') -> 'int':
        #m, n = len(grid), len(grid[0])
        counter = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] > '0':
                    counter += 1
                    self.dfs(grid, i, j)
        return counter
    
    def dfs(self, grid, i, j):
        if i < 0 or i >= len(grid) or j < 0 or j >= len(grid[0]) or grid[i][j] == '0':
            return 
        grid[i][j] = '0'
        self.dfs(grid, i, j-1)
        self.dfs(grid, i+1, j)
        self.dfs(grid, i, j+1)
        self.dfs(grid, i-1, j)

你可能感兴趣的:(python刷leetcode)