题目描述:
给一个01矩阵,求不同的岛屿的个数。
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
您在真实的面试中是否遇到过这个题?
Yes
样例
在矩阵:
[
[1, 1, 0, 0, 0],
[0, 1, 0, 0, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 1]
]
中有 3
个岛.
class Solution:
def countIslands(self,m):
row=len(m)
col=len(m[0:][0])
count=0
#遍历二维数组,遇到为1的点,就调用感染函数
for i in range(row):
for j in range(col):
if m[i][j]==1:
count+=1
self.infect(m,row,col,i,j)
return count
def infect(self,m,row ,col,i,j):
if(i<0 or i>=row or j<0 or j>=col or m[i][j]!=1):
return
m[i][j]=2 #将上下左右为1的值全部都改写为2
#infect(m,row,col,i,j-1)
self.infect(m,row,col,i,j-1)
self.infect