题解 | #岛屿数量#

岛屿数量

http://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e

向四个方向进行感染并标记.


class Solution:
    def solve(self, grid: List[List[str]]) -> int:
        # write code here
        m = len(grid)
        n = len(grid[0])
        # 感染过程
        def findother(grid, x, y):
            # 越界 return
            if x < 0 or x >= m or y < 0 or y >= n:
                return
            # 遇到海水0或已经感染过的岛2 return
            if grid[x][y] == "2" or grid[x][y] == "0":
                return
            # 改变当前岛并继续感染
            if grid[x][y] == "1":
                grid[x][y] = "2"
                findother(grid, x - 1, y)
                findother(grid, x + 1, y)
                findother(grid, x, y - 1)
                findother(grid, x, y + 1)

        res = 0
        for x in range(m):
            for y in range(n):
                if grid[x][y] == "1":
                    res += 1
                    findother(grid, x, y)

        return res

全部评论

相关推荐

05-22 12:44
已编辑
门头沟学院 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务