LeetCode solutions

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

Read the problem on LeetCode View on GitHub

Python

Accepted on LeetCode — runtime 2ms, memory 17.9MB, accepted 2026-01-02.

python
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

Source