美文网首页
leecode岛屿数量

leecode岛屿数量

作者: 柴柴总 | 来源:发表于2020-09-14 09:59 被阅读0次

题目描述
可用解法
DFS 深度优先遍历
BFS 广度优先遍历
算法思路:下列代码用BFS,循环遍历输入的二维列表如果遇到岛屿(即为1),将其作为根节点作BFS,注意BFS要记录下访问过的结点,如果访问过则不再加入树中

class Solution(object):
    def numIslands(self, grid):
        """
        :type grid: List[List[str]]
        :rtype: int
        """
        self.grid = grid
        num = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                # BFS
                if grid[i][j] == "1":
                    quene = list()
                    num += 1
                    quene.append([i, j])
                    grid[i][j] = "1"
                    while len(quene) != 0:
                        x, y = quene[0]
                        del quene[0]
                        # up
                        if self.Ingrid(x - 1, y) and grid[x-1][y] == "1":
                            grid[x - 1][y] = "0"
                            quene.append([x - 1, y])
                        # down
                        if self.Ingrid(x + 1, y) and grid[x+1][y] == "1":
                            grid[x + 1][y] = "0"
                            quene.append([x + 1, y])
                        # left
                        if self.Ingrid(x, y - 1) and grid[x][y-1] == "1":
                            grid[x][y - 1] = "0"
                            quene.append([x, y - 1])
                        # right
                        if self.Ingrid(x, y + 1) and grid[x][y+1] == "1":
                            grid[x][y + 1] = "0"
                            quene.append([x, y + 1])
        return num

    def Ingrid(self, i, j):
        if i >= 0 and i < len(self.grid) and j >= 0 and j < len(self.grid[0]):
            return True
        else:
            return False

# s = Solution().numIslands([["1","1","0","0","0"],["1","1","0","0","0"],["0","0","1","0","0"],["0","0","0","1","1"]])
# print(s)

相关文章

  • leecode岛屿数量

    题目描述可用解法DFS 深度优先遍历BFS 广度优先遍历算法思路:下列代码用BFS,循环遍历输入的二维列表如果遇到...

  • Leetcode 岛屿数量

    题目描述 leecode第200题:岛屿数量[https://leetcode-cn.com/problems/n...

  • LC吐血整理之DFS&BFS篇

    所有题解方法请移步 github-Leecode_summary 200. 岛屿数量 三个字:不会做,没有什么好的...

  • 岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或...

  • 岛屿数量

    题目描述:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,...

  • 岛屿数量

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/numb...

  • 岛屿数量

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number...

  • 岛屿数量

    题目描述 https://leetcode-cn.com/problems/number-of-islands/ ...

  • 岛屿数量

    题目 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平...

  • 岛屿数量

    题目: 题目的理解: 1相邻的是一个岛屿,遍历数组,当碰到1则记录一个岛屿A,然后将1相连的1都设置为2,说明已经...

网友评论

      本文标题:leecode岛屿数量

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