मान लीजिए कि हमारे पास X और O वाला 2D बोर्ड है। X से घिरे सभी क्षेत्रों को कैप्चर करें। उस क्षेत्र में सभी Os को Xs में बदलकर एक क्षेत्र कैप्चर किया जाता है।
X | X | X | X |
X | ओ | ओ | X |
X | X | ओ | X |
X | ओ | X | X |
आउटपुट चलाने के बाद होगा
X | X | X | X |
X | X | X | X |
X | X | X | X |
X | ओ | X | X |
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
यदि बोर्ड मौजूद नहीं है, तो खाली बोर्ड लौटाएं
-
मेरे लिए 0 से लेकर पंक्तियों की संख्या तक - 1 -
-
अगर बोर्ड[i, 0] ='O', तो make_one(board, i, 0)
-
अगर बोर्ड [i, पंक्ति की लंबाई - 1] ='O', तो make_one(बोर्ड, i, पंक्ति की लंबाई -1)
-
-
मैं के लिए 0 से लेकर कॉल्स की संख्या तक - 1 -
-
अगर बोर्ड [0, i] ='O', तो make_one(board, 0, i)
-
अगर बोर्ड [पंक्ति की संख्या -1, i] ='O', तो make_one(बोर्ड, पंक्ति की संख्या -1, i)
-
-
मेरे लिए 0 से लेकर पंक्तियों की संख्या तक
-
j के लिए 0 से लेकर कॉल्स की संख्या तक
-
यदि बोर्ड[i, j] ='O', तो बोर्ड[i, j] ='X', अन्यथा 1 के लिए, बोर्ड[i, j] ='O'
-
-
-
Make_one इस तरह होगा -
-
अगर मैं <0 या j <0 या i>=पंक्ति गणना या j>=कॉल गणना या बोर्ड[i, j] ='X' या बोर्ड[i, j] ='1', तो वापस जाएं
-
बोर्ड[i, j] :=1
-
कॉल करें make_one(voard, i + 1, j), make_one(voard, i-1, j), make_one(voard, i, j + 1), make_one(voard, i, j-1)
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def solve(self, board): """ :type board: List[List[str]] :rtype: None Do not return anything, modify board in-place instead. """ if not board: return board for i in range(len(board)): if board[i][0]=='O': self.make_one(board,i,0) if board[i][len(board[0])-1] == 'O': self.make_one(board,i,len(board[0])-1) for i in range(len(board[0])): if board[0][i]=='O': self.make_one(board,0,i) if board[len(board)-1][i] == 'O': self.make_one(board,len(board)-1,i) for i in range(len(board)): for j in range(len(board[i])): if board[i][j]=='O': board[i][j]='X' elif board[i][j]=='1': board[i][j]='O' def make_one(self, board,i,j): if i<0 or j<0 or i>=len(board) or j>=len(board[0]) or board[i][j]=='X' or board[i][j]=='1': return board[i][j]='1' self.make_one(board,i+1,j) self.make_one(board,i-1,j) self.make_one(board,i,j+1) self.make_one(board,i,j-1)
इनपुट
[["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]
आउटपुट
[["X","X","X","X"],["X","X","X","X"],["X","X","X","X"],["X","O","X","X"]]