Coloring A Border LeetCode solution in Python
1# Runtime: 136 ms (Top 91.96%) | Memory: 14.4 MB (Top 28.67%)234class Solution:5def colorBorder(6self, grid: List[List[int]], row: int, col: int, color: int7) -> List[List[int]]:89rows, cols = len(grid), len(grid[0])10border_color = grid[row][col]11border = []1213# Check if a node is a border node or not14def is_border(r, c):15if r == 0 or r == rows - 1 or c == 0 or c == cols - 1:16return True1718for dr, dc in [(1, 0), (0, 1), (-1, 0), (0, -1)]:19nr, nc = r + dr, c + dc20if grid[nr][nc] != border_color:21return True22return False2324def dfs(r, c):25if (26r < 027or c < 028or r == rows29or c == cols30or (r, c) in visited31or grid[r][c] != border_color32):33return34visited.add((r, c))3536if is_border(r, c):37border.append((r, c))3839dfs(r + 1, c)40dfs(r - 1, c)41dfs(r, c + 1)42dfs(r, c - 1)4344visited = set()45dfs(row, col)46for r, c in border:47grid[r][c] = color48return grid