给定一个由 '1'
(陆地)和 '0'
(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入: 11110 11010 11000 00000 输出: 1
示例 2:
输入: 11000 11000 00100 00011 输出: 3
由于在今年3月份网上笔试的时候碰到过这个题目,当时觉得非常难,没有写出来,现在准备下一轮实习笔试面试了,于是又捡起来写一写。。
思路:
1)用常规循环找到一个“1”以后,
2)将“1”连着的“1”变成“2”(变成什么没关系,就是提醒自己这个是被连着的)。
3)把找到的“1”变成“0”,接下来找出矩阵中的“2”。(一次循环结束,我使用的是while循环,因为不知道孤岛的大小)
4)然后把矩阵中的“2”当做“1”,回到2)。
5)直到有一次找不到“2”了,“孤岛”数量 +=1,再回到1)
代码:
class Solution:
def numIslands(self, grid):
""