美文网首页
200. Number of Islands

200. Number of Islands

作者: 小歪与大白兔 | 来源:发表于2018-08-25 09:12 被阅读0次

    题目大意:
    给定一个由字符‘1’(陆地)和‘0’(水域)组成的二维网格地图,计算岛屿的个数。岛屿被水域环绕,由竖直或者水平方向邻接的陆地构成。你可以假设网格地图的四条边都被水域包围。

    测试样例见题目描述。

    题目思路:
    做法是,我们对每个有“1”的位置进行dfs,把它和它四联通的位置全部变成“0”,这样就能把一个点推广到一个岛。

    所以,我们总的进行了dfs的次数,就是总过有多少个岛的数目。

    class Solution(object):
        def numIslands(self, grid):
            """
            :type grid: List[List[str]]
            :rtype: int
            """
            res = 0
            for row in range(len(grid)):
                for col in range(len(grid[0])):
                    if grid[row][col] == '1':
                        res = res + 1
                        self.bfs(grid,row,col)
            return res
    
        def bfs(self,grid,row,col):
            #direction表示的是四个方向
            direction = [(-1,0),(1,0),(0,-1),(0,1)]
            grid[row][col] = '0'
            for d in direction:
                new_row = row + d[0]
                new_col = col + d[1]
                if 0<= new_row < len(grid) and 0<= new_col < len(grid[0]):
                    if grid[new_row][new_col] == '1':
                        self.bfs(grid,new_row,new_col)
    
    image.png

    相关文章

      网友评论

          本文标题:200. Number of Islands

          本文链接:https://www.haomeiwen.com/subject/jnpwiftx.html