200. Number of Islands

# Medium

Key idea: DFS

深度搜索,一旦碰到一个没有被访问过的‘1’,遍深度搜索其上下左右,直到相邻的‘1’全部搜索到,在相应的矩阵里标记visited,每深度遍历一次,res++ 来记录有多少个新出现的‘1’即独立的岛。

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        res = 0
        visit = []
        for i in range(len(grid)):
            tmp = [False for i in range(len(grid[0]))]
            visit.append(tmp)
            
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == '0' or visit[i][j] == True:
                    continue
                self.helper(grid, i, j, visit)
                res += 1
       # print(visit)
        return res
    
    def helper(self, grid, i, j, visit):
        if i<0 or i>=len(grid) or j<0 or j>=len(grid[0]) or grid[i][j] == '0' or visit[i][j] == True:
            return
        visit[i][j] = True
        self.helper(grid, i+1, j, visit)
        self.helper(grid, i-1, j, visit)
        self.helper(grid, i, j+1, visit)
        self.helper(grid, i, j-1, visit)

Last updated