200岛屿数量.py 918 B

12345678910111213141516171819202122232425262728293031323334
  1. from typing import List
  2. class Solution:
  3. def numIslands(self, grid: List[List[str]]) -> int:
  4. num = 0
  5. m, n = len(grid), len(grid[0])
  6. for i in range(m):
  7. for j in range(n):
  8. if grid[i][j] == '1':
  9. num += 1
  10. self.dfs(grid, i, j)
  11. return num
  12. def dfs(self, grid: List[List[str]], i: int, j: int):
  13. m, n = len(grid), len(grid[0])
  14. if i < 0 or j < 0 or i >= m or j >= n:
  15. return
  16. if grid[i][j] == '0':
  17. return
  18. grid[i][j] = "0"
  19. self.dfs(grid, i - 1, j)
  20. self.dfs(grid, i + 1, j)
  21. self.dfs(grid, i, j - 1)
  22. self.dfs(grid, i, j + 1)
  23. if __name__ == '__main__':
  24. print(Solution().numIslands([
  25. ["1", "1", "0", "0", "0"],
  26. ["1", "1", "0", "0", "0"],
  27. ["0", "0", "1", "0", "0"],
  28. ["0", "0", "0", "1", "1"]
  29. ]))