Given a 2-D matrix board where every element is either O or ‘ X , write a program to replace O with X if surrounded by X ’.

Problem Note

  • An O or a set of O is considered to be by surrounded by X if there are X at locations just below, just above just left and just right of it.
  • Surrounded regions shouldn’t be on the border, which means that any 'O' on the border of the board are not flipped to 'X' .
  • Any 'O' that is not on the border and it is not connected to an 'O' on the border will be flipped to 'X' .
  • Two cells are connected if they are adjacent cells connected horizontally or vertically.

Example 1

Input: board[][] = [ 
                 ['X', 'O', 'X', 'X', 'X', 'X'],
                 ['X', 'O', 'X', 'X', 'O', 'X'],
                 ['X', 'X', 'X', 'O', 'O', 'X'],
                 ['O', 'X', 'X', 'X', 'X', 'X'],
                 ['X', 'X', 'X', 'O', 'X', 'O'],
                 ['O', 'O', 'X', 'O', 'O', 'O'],
               ]
Output: board[][] = [ 
                  ['X', 'O', 'X', 'X', 'X', 'X'],
                  ['X', 'O', 'X', 'X', 'X', 'X'],
                  ['X', 'X', 'X', 'X', 'X', 'X'],
                  ['O', 'X', 'X', 'X', 'X', 'X'],
                  ['X', 'X', 'X', 'O', 'X', 'O'],
                  ['O', 'O', 'X', 'O', 'O', 'O'],
                ]

Example 2

Input: board[][] = [ 
                 ['X', 'X', 'X', 'X']
                 ['X', 'O', 'X', 'X']
                 ['X', 'O', 'O', 'X']
                 ['X', 'O', 'X', 'X']
                 ['X', 'X', 'O', 'O']
               ]
Output: board[][] = [ 
                  ['X', 'X', 'X', 'X']
                  ['X', 'X', 'X', 'X']
                  ['X', 'X', 'X', 'X']
                  ['X', 'X', 'X', 'X']
                  ['X', 'X', 'O', 'O']
                ]