首页 > 编程语言 > 详细

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

时间:2020-05-26 10:44:37      阅读:268      评论:0      收藏: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)

  

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

原文:https://www.cnblogs.com/zhuozige/p/12963983.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!