深度优先递归
双层循环进行遍历,对每个1进行计数作为岛屿,然后进入递归将这个1四周的1的四周都变为0即淹没,最后得到答案
#python
class Solution:
def dfs(self,grid,a,b):
grid[a][b]=0
c,d=len(grid),len(grid[0])
for x,y in [(a-1,b),(a+1,b),(a,b-1),(a,b+1)]:
if 0<=x<c and 0<=y<d and grid[x][y]=="1":
self.dfs(grid,x,y)
def numIslands(self, grid: List[List[str]]) -> int:
a=len(grid)
if a==0:
return 0
b=len(grid[0])
ans=0
for i in range(a):
for j in range(b):
if grid[i][j]=="1":
ans=ans+1
self.dfs(grid,i,j)
return ans