zoukankan      html  css  js  c++  java
  • 【LeetCode】200. 岛屿的个数

    题目

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
    示例 1:输入:

    11110
    11010
    11000
    00000
    
    输出: 1
    

    示例 2:输入:

    11000
    11000
    00100
    00011
    
    输出: 3
    

    思路

    DFS,深度遍历搜索
    visited记录遍历过的陆地

    代码

    class Solution:
        def numIslands(self, grid: List[List[str]]) -> int:
            if len(grid) == 0:
                return 0
            #visited全部初始化为0
            row, col = len(grid), len(grid[0])
            visited = [[0 for x in range(0, col)] for y in range(0, row)]
            
            count=0
            for i in range(0,row):
                for j in range(0,col):
                    if visited[i][j]==0 and grid[i][j]=='1':
                        self.dfs(grid,i,j,visited)
                        count += 1
            return count
            
        def dfs(self, grid, i, j, visited):
            if i < 0 or i >= len(grid):
                return
            if j < 0 or j >= len(grid[0]):
                return
            if grid[i][j]=='0' or visited[i][j]==1:
                return
            visited[i][j] = 1 #遍历过的地方置为1
            #上下左右四个方向遍历
            self.dfs(grid, i-1, j, visited)
            self.dfs(grid, i+1, j, visited)
            self.dfs(grid, i, j-1, visited)
            self.dfs(grid, i, j+1, visited)
    
  • 相关阅读:
    U盘文件被隐藏的解决办法
    Regex 符号说明
    HTML特殊字符编码对照表
    Regex 常用
    String decryption with de4dot
    使用Topshelf创建Windows服务[转载]
    de4dot Deobfuscator for .NET
    [原创]extjs htmleditor增加截图快速粘贴功能 插件
    de4dot FAQ
    Cache缓存
  • 原文地址:https://www.cnblogs.com/wemo/p/10547711.html
Copyright © 2011-2022 走看看