描述
给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。
示例1
输入:
[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]
复制返回值:
3
复制
备注:
01矩阵范围<=200*200
#
# 判断岛屿数量
# @param grid char字符型二维数组
# @return int整型
#
class Solution:
def solve(self , grid):
def BFS(x,y):
step = [[x,y]]
while len(step) != 0:
point = step.pop(0)
x = point[0]
y = point[1]
if 0 <= x < len(grid) and 0 <= y < len(grid[0]) and grid[x][y] == '1':
step += [[x-1,y], [x+1,y], [x,y-1], [x,y+1]]
grid[x][y] = '0'
num = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '0':
continue
BFS(i,j)
num += 1
return num
# write code here
深搜广搜都能做,这里用的广搜
还是要注意python的一些特性,尽量利用特性去写代码来提高效率