মান করুন একটি ২D বোর্ড আছে যাতে X এবং O আছে। X দ্বারা ঘেরা সব অঞ্চল ক্যাপচার করুন। একটি অঞ্চল ক্যাপচার করা হয় সেটির সব O কে X এ পরিবর্তন করে।
| 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 |
সমাধানের ধাপগুলো (DFS/Flood Fill):
যদি বোর্ড না থাকে, তবে খালি বোর্ড রিটার্ন করুন
i০ থেকে সারি সংখ্যা - ১ পর্যন্তযদি
board[i][0] == 'O', তবেmake_one(board, i, 0)যদি
board[i][কলাম_সংখ্যা-1] == 'O', তবেmake_one(board, i, কলাম_সংখ্যা-1)
i০ থেকে কলাম সংখ্যা - ১ পর্যন্তযদি
board[0][i] == 'O', তবেmake_one(board, 0, i)যদি
board[সারি_সংখ্যা-1][i] == 'O', তবেmake_one(board, সারি_সংখ্যা-1, i)
i০ থেকে সারি সংখ্যাj০ থেকে কলাম সংখ্যাযদি
board[i][j] == 'O', তবেboard[i][j] = 'X', অন্যথায় ১ হলেboard[i][j] = 'O'
make_oneফাংশন:যদি
i < 0বাj < 0বাi >= সারি_সংখ্যাবাj >= কলাম_সংখ্যাবাboard[i][j] == 'X'বাboard[i][j] == '1', তবে রিটার্নboard[i][j] := '1'make_one(board, i+1, j),make_one(board, i-1, j),make_one(board, i, j+1),make_one(board, 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"]]