130. Surrounded Regions - LeetCode Solution


Depth-first Search

Python Code:

class Solution:
    def solve(self, board: List[List[str]]) -> None:
        def Erase(rid, cid):
            if rid < 0 or cid < 0 or rid > len(board) -1 or cid > len(board[0]) -1 or board[rid][cid] in ('X', 'E'):
                return
            board[rid][cid] = 'E'
            Erase(rid-1, cid)
            Erase(rid+1, cid)
            Erase(rid, cid-1)
            Erase(rid, cid+1)
            
            
        for rid, row in enumerate(board):
            for cid, column in enumerate(row):
                if rid == 0 or cid == 0 or rid == len(board) -1 or cid == len(board[0])-1:
                    if board[rid][cid] == 'O':
                        Erase(rid, cid)
    
        for rid, row in enumerate(board):
            for cid, column in enumerate(row):
                if board[rid][cid] == 'O':
                    board[rid][cid] = 'X'
                if board[rid][cid] == 'E':
                    board[rid][cid] = 'O'


Comments

Submit
0 Comments
More Questions

1609A - Divide and Multiply
149B - Martian Clock
205A - Little Elephant and Rozdil
1609B - William the Vigilant
978B - File Name
1426B - Symmetric Matrix
732B - Cormen --- The Best Friend Of a Man
1369A - FashionabLee
1474B - Different Divisors
1632B - Roof Construction
388A - Fox and Box Accumulation
451A - Game With Sticks
768A - Oath of the Night's Watch
156C - Cipher
545D - Queue
459B - Pashmak and Flowers
1538A - Stone Game
1454C - Sequence Transformation
165B - Burning Midnight Oil
17A - Noldbach problem
1350A - Orac and Factors
1373A - Donut Shops
26A - Almost Prime
1656E - Equal Tree Sums
1656B - Subtract Operation
1656A - Good Pairs
1367A - Short Substrings
87A - Trains
664A - Complicated GCD
1635D - Infinite Set