from typing import List class Solution: def numIslands(self, grid: List[List[str]]) -> int: num = 0 m, n = len(grid), len(grid[0]) for i in range(m): for j in range(n): if grid[i][j] == '1': num += 1 self.dfs(grid, i, j) return num def dfs(self, grid: List[List[str]], i: int, j: int): m, n = len(grid), len(grid[0]) if i < 0 or j < 0 or i >= m or j >= n: return if grid[i][j] == '0': return grid[i][j] = "0" self.dfs(grid, i - 1, j) self.dfs(grid, i + 1, j) self.dfs(grid, i, j - 1) self.dfs(grid, i, j + 1) if __name__ == '__main__': print(Solution().numIslands([ ["1", "1", "0", "0", "0"], ["1", "1", "0", "0", "0"], ["0", "0", "1", "0", "0"], ["0", "0", "0", "1", "1"] ]))