1104. Coloring A Border
My accepted Python solution to LeetCode problem 1104, Coloring A Border, running in 2ms.
- Difficulty: Medium
- Python
- Runtime 2ms
- Memory 17.9MB
- Updated
Read the problem on LeetCode View on GitHub
The problem statement is LeetCode’s and stays on their site. What follows is my accepted solution.
Python
Accepted on LeetCode — runtime 2ms, memory 17.9MB, accepted 2026-01-02.
class Solution:
def colorBorder(self, grid: List[List[int]], row: int, col: int, color: int) -> List[List[int]]:
m, n = len(grid), len(grid[0])
original_color = grid[row][col]
visited = set()
border = []
def dfs(r, c):
if (r, c) in visited:
return True
if r < 0 or r >= m or c < 0 or c >= n or grid[r][c] != original_color:
return False
visited.add((r, c))
# Check all 4 directions
is_border = False
for dr, dc in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
nr, nc = r + dr, c + dc
if not dfs(nr, nc):
is_border = True
if is_border:
border.append((r, c))
return True
dfs(row, col)
for r, c in border:
grid[r][c] = color
return grid