Surrounded regions

TopicDifficultyCompanies
Graph Algorithms
HARD
Google

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']
]

Code Editor

Practice and Learn

Best way to learn is through solving real problems. Practice this problem in this code editor.