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)
    
  • 相关阅读:
    Linux防火墙使用配置
    es安装笔记
    git仓库免密码登陆配置
    swgger前后端分离api生成
    关于redis
    学习笔记关于springboot
    idea 安装记录
    随记
    开课吧--Python数据分析--第4节 数据七十二变--互动练习:如果你不需要,就让它消失!
    jupyter使用方法
  • 原文地址:https://www.cnblogs.com/wemo/p/10547711.html
Copyright © 2011-2022 走看看