[leetcode]岛屿数量

dfs将连续可达的1改为0,然后遍历整个表格

class Solution:
    
    def numIslands_sub(self, x:int, y:int):
        if(x < 0 or x >= self.n or y < 0 or y >= self.m or self.grid[x][y] == "0"):
            return
        
        self.grid[x][y] = "0"
        self.numIslands_sub(x+1, y)
        self.numIslands_sub(x, y+1)
        self.numIslands_sub(x-1, y)
        self.numIslands_sub(x, y-1)
            
    def numIslands(self, grid: List[List[str]]) -> int:
        self.grid,self.n = grid, len(grid)
        num = 0
        if(self.n == 0):
            return 0
        self.m = len(grid[0])
        if(self.m == 0):
            return 0        
        for i in range(self.n):
            for j in range(self.m):
                if(grid[i][j] == "1"):
                    num += 1
                    self.numIslands_sub(i, j)
        return num

你可能感兴趣的:([leetcode]岛屿数量)