【leetcode12】

200. 岛屿数量

  1. class Solution:
  2.     def numIslands(self, grid: List[List[str]]) -> int:
  3.         res=0
  4.         row=len(grid)
  5.         col=len(grid[0])
  6.         def bfs(i,j):
  7.             if i<0 or j<0 or i>=row or j>=col or grid[i][j]=='0':
  8.                 return    #递归调用没有判断grid[i][j]=='0',故需要判断
  9.             grid[i][j]='0'
  10.             bfs(i+1,j)
  11.             bfs(i-1,j)
  12.             bfs(i,j-1)
  13.             bfs(i,j+1)
  14.         for i in range(row):
  15.             for j in range(col):
  16.                 if grid[i][j]=='1':
  17.                     res+=1 #dfs时结果加1
  18.                     bfs(i,j)
  19.         return res

题目是字符数组不是数字数组,7行16行易错

利用dfs消除同一片陆地,主函数调用dfs次数即为所求

发表评论