rows = len(grid) columns = len(grid[0]) ans = 0 for i inrange(rows): for j inrange(columns): if grid[i][j] == "1": ans += 1 dfs(grid, i, j) # print(grid) return ans
queue = collections.deque() for i inrange(rows): for j inrange(columns): if grid[i][j] == "1": ans += 1 queue.append((i, j)) grid[i][j] = ans queue.append((i, j)) while queue: row, column = queue.popleft() if row>0and grid[row-1][column] == "1": queue.append((row-1, column)) grid[row-1][column] = ans if row < rows-1and grid[row+1][column] == "1": queue.append((row+1, column)) grid[row+1][column] = ans if column>0and grid[row][column-1] == "1": queue.append((row, column-1)) grid[row][column-1] = ans if column<columns-1and grid[row][column+1] == "1": queue.append((row, column+1)) grid[row][column+1] = ans # print(grid) return ans