zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    cesium图形上加载图片
    cesium可视化空间数据2
    linux命令之用户和用户组
    YARN应用程序开发和设计流程
    Yarn中几个专用名称
    break、continue、return之间的区别与联系
    kafka的相关操作脚本
    scala函数进阶篇
    scala的基础部分
    视图
  • 原文地址:https://www.cnblogs.com/hqzxwm/p/14407897.html
Copyright © 2011-2022 走看看