Surrounded Regions(Leetcode 130)
Problem Link: https://leetcode.com/problems/surrounded-regions/
class Solution:
def solve(self, board: List[List[str]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
def dfs(i,j,m,n,board):
# Don't write board[i][j]=="X" because we also have
# #s in the board which leads to max recursion depth
# exceeded error
if(i<0 or j<0 or i>=m or j>=n or board[i][j]!="O"):
return
board[i][j]="#"
dfs(i-1,j,m,n,board)
dfs(i,j-1,m,n,board)
dfs(i+1,j,m,n,board)
dfs(i,j+1,m,n,board)
m=len(board)
n=len(board[0])
for i in range(m):
if(board[i][0]=="O"):
dfs(i,0,m,n,board)
if(board[i][n-1]=="O"):
dfs(i,n-1,m,n,board)
for j in range(n):
if(board[0][j]=="O"):
dfs(0,j,m,n,board)
if(board[m-1][j]=="O"):
dfs(m-1,j,m,n,board)
for i in range(m):
for j in range(n):
# surrounded by X
if(board[i][j]=="O"):
board[i][j]="X"
# connected with borders
elif(board[i][j]=="#"):
board[i][j]="O"
Last updated