• leetcode_200. 岛屿数量


    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
    
    岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
    
    此外,你可以假设该网格的四条边均被水包围。
    
     
    
    示例 1:
    
    输入:grid = [
      ["1","1","1","1","0"],
      ["1","1","0","1","0"],
      ["1","1","0","0","0"],
      ["0","0","0","0","0"]
    ]
    输出:1
    示例 2:
    
    输入:grid = [
      ["1","1","0","0","0"],
      ["1","1","0","0","0"],
      ["0","0","1","0","0"],
      ["0","0","0","1","1"]
    ]
    输出:3
     
    
    提示:
    
    m == grid.length
    n == grid[i].length
    1 <= m, n <= 300
    grid[i][j] 的值为 '0' 或 '1'
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/number-of-islands
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    class Solution:
        def numIslands(self, grid: List[List[str]]) -> int:
            def dfs(grid,r,c):
                grid[r][c]=0
                nr=len(grid)
                nc=len(grid[0])
                for x, y in [(r-1,c),(r+1,c),(r,c-1),(r,c+1)]:
                    if 0<=x<nr and 0<=y<nc and grid[x][y]=='1':
                        dfs(grid,x,y)
            
            nr=len(grid)
            if nr==0:return 0
            nc=len(grid[0])
            res=0
            for i in range(nr):
                for j in range(nc):
                    if grid[i][j]=='1':
                        res+=1
                        dfs(grid,i,j)
            
            return res
    
  • 相关阅读:
    从零开始的HTML5之旅(三)
    2020年3月12日
    2020年3月14日
    错误There is no Action mapped for namespace / and action name—Struts2
    2014.05.06我在这里起航
    Test For Windows Live Writer
    点亮灯泡——JS实现
    windows phone中解决html乱码问题
    .net处理多线程
    Windows Store App之数据存储
  • 原文地址:https://www.cnblogs.com/hqzxwm/p/14407897.html
Copyright © 2020-2023  润新知