###### tags: `Week_2`, `Graph/BFS/DFS` # Graph/BFS/DFS ## 733. [Flood Fill](https://leetcode.com/problems/flood-fill/) ```python= class Solution: def floodFill(self, image: List[List[int]], sr: int, sc: int, color: int) -> List[List[int]]: target_color = image[sr][sc] def dfs(i, j): # print(i, j) if image[i][j] != target_color: return elif image[i][j] == target_color: image[i][j] = color if i - 1 >= 0: dfs(i-1, j) if i + 1 < len(image): dfs(i+1, j) if j - 1 >= 0: dfs(i, j-1) if j + 1 < len(image[i]): dfs(i, j+1) if image[sr][sc] == color: return image else: dfs(sr, sc) return image ``` ## 200. [Number of Islands](https://leetcode.com/problems/number-of-islands/) ```python= import queue class Solution: def numIslands(self, grid: List[List[str]]) -> int: num_queue = queue.Queue() num_islands = 0 for i in range(len(grid)): for j in range(len(grid[i])): if grid[i][j] == '1': num_islands+=1 grid[i][j] = '0' num_queue.put((i, j)) while not num_queue.empty(): row, col = num_queue.get() if row - 1 >= 0 and grid[row - 1][col] == '1': num_queue.put((row-1, col)) grid[row-1][col] = '0' if col - 1 >= 0 and grid[row][col - 1] == '1': num_queue.put((row, col - 1)) grid[row][col - 1] = '0' if row + 1 < len(grid) and grid[row + 1][col] == '1': num_queue.put((row+1, col)) grid[row+1][col] = '0' if col + 1 < len(grid[row]) and grid[row][col + 1] == '1': num_queue.put((row, col + 1)) grid[row][col + 1] = '0' return num_islands ```