04. Replace O's with X's
Last updated
Was this helpful?
Last updated
Was this helpful?
The problem can be found at the following link:
I've used a DFS approach to point out the regions of 'O' characters that were not completely 'X' surrounded.
To identify these regions, I have checked all the grid borders. If I encounter any 'O' character along the border, it indicates that the connected 'O' characters within this region is not entirely enclosed by 'X'. So, I label such 'O' characters as 'N'.
At last, I identify the 'O' characters that are entirely surrounded, and I replace them with 'X' and change 'N' to 'O' back.
The steps involved in implementing this:
I define a dx
and dy
array to represent the four possible directions: up, down, left, and right.
I create two helper functions:
isValid
checks if a given cell is within the bounds of the matrix.
isBoundary
checks if a given cell is on the boundary of the matrix.
I use a recursive function setNotClosed
to mark all connected 'O' characters as 'N' if they are not closed (not surrounded by 'X').
In the fill
function, I iterate through the entire matrix and whenever I encounter an 'O' on the boundary, I call setNotClosed
to mark all connected 'O' characters as 'N'.
Finally, I iterate through the entire matrix again and change 'O' to 'X' and 'N' back to 'O' to complete the transformation.
Time Complexity: The time complexity is O(n * m)
, where n
is the number of rows, and m is the number of columns for traversing all cells of grid.
Auxiliary Space Complexity: The space complexity is O(1)
as we don't use any additional data structures that depend on the input size.
For discussions, questions, or doubts related to this solution, please visit our . We welcome your input and aim to foster a collaborative learning environment.
If you find this solution helpful, consider supporting us by giving a ⭐ star
to the repository.