LeetCode--200.Number of Islands(孤岛个数)Python

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxiaoley/article/details/82557634

题目:

给定一个2维网格图,其中“1”(陆地)和“0”(水),计算岛屿的数量。岛屿被水包围,通过水平或垂直连接相邻的陆地形成。你可以假设网格的四边都被水包围着。例子如下图所示

解题思路:

从最左上角开始遍历这个网格图,当遍历到该点值为1的时候,将其更新为0,并以该点进行扩展,扩展方式为上下左右四个方向,扩展到的陆地(即值为1)将其值更新为0,直到不能扩展。再继续遍历下一个值为1点的,更新为0后进行扩展。

代码(Python):

class Solution(object):
    def numIslands(self, grid):
        """
        :type grid: List[List[str]]
        :rtype: int
        """
        output = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]=='1':
                    output += 1
                    self.dfs(grid,i,j)
        return output
    
    def dfs(self,grid,i,j):
        grid[i][j] = '0'
        if i-1>=0 and grid[i-1][j]=='1':
            self.dfs(grid,i-1,j)
        if i+1<len(grid) and grid[i+1][j]=='1':
            self.dfs(grid,i+1,j)
        if j-1>=0 and grid[i][j-1]=='1':
            self.dfs(grid,i,j-1)
        if j+1<len(grid[0]) and grid[i][j+1]=='1':
            self.dfs(grid,i,j+1)
        
                    
        

猜你喜欢

转载自blog.csdn.net/xiaoxiaoley/article/details/82557634