zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):深度优先搜索类:第200题:岛屿数量:给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。

    题目:

    岛屿数量:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。  岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。  此外,你可以假设该网格的四条边均被水包围。  

    示例 1:

    输入:
    11110
    11010
    11000
    00000
    输出: 1
    示例 2:

    输入:
    11000
    11000
    00100
    00011
    输出: 3
    解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成。

    思路:

    类似机器人走迷宫。本题使用的沉岛的思想。

    程序:

    class Solution:
        def numIslands(self, grid: List[List[str]]) -> int:
            if not grid:
                return 0
            result = 0
            for index1 in range(len(grid)):
                for index2 in range(len(grid[0])):
                    if grid[index1][index2] == '1':
                        self.auxiliary(grid, index1, index2)
                        result += 1
            return result 
        def auxiliary(self, grid: List[List[str]], index1: int, index2: int):
            if index1 < 0 or index2 < 0 or index1 >= len(grid) or index2 >= len(grid[0]) or grid[index1][index2] != '1':
                return 
            grid[index1][index2] = '0'
            self.auxiliary(grid, index1 - 1, index2)
            self.auxiliary(grid, index1 + 1, index2)
            self.auxiliary(grid, index1, index2 - 1)
            self.auxiliary(grid, index1, index2 + 1)
    

      

  • 相关阅读:
    quotaon
    quotacheck
    quota
    query_module
    数据库连接驱动
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 76 最小覆盖子串
    Java实现 LeetCode 74 搜索二维矩阵
    Java实现 LeetCode 74 搜索二维矩阵
    Java实现 LeetCode 74 搜索二维矩阵
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12963983.html
Copyright © 2011-2022 走看看