Leetcode200岛屿数量
bfs
class Solution:
def numIslands(self, grid):
if not grid or not grid[0]:
return 0
self.m, self.n = len(grid), len(grid[0])
islands = 0
for row in range(self.m):
for col in range(self.n):
if grid[row][col] == "1":
islands += 1
grid[row][col] = '0'
self.bfs(grid, row, col)
return islands
def bfs(self, grid, row, col):
queue = collections.deque([(row, col)])
while queue:
row, col = queue.popleft()
for x, y in [(row - 1, col), (row + 1, col), (row, col - 1), (row, col + 1)]:
if 0 <= x < self.m and 0 <= y < self.n and grid[x][y] == "1":
queue.append((x, y))
grid[x][y] = '0'
dfs
class Solution:
def numIslands(self, grid):
if not grid or not grid[0]:
return 0
self.m, self.n = len(grid), len(grid[0])
islands = 0
for row in range(self.m):
for col in range(self.n):
if grid[row][col] == "1":
islands += 1
self.dfs(grid, row, col)
return islands
def dfs(self, grid, row, col):
grid[row][col] = "0"
for x, y in [(row - 1, col), (row + 1, col), (row, col - 1), (row, col + 1)]:
if 0 <= x < self.m and 0 <= y < self.n and grid[x][y] == "1":
self.dfs(grid, x, y)