Minesweeper

Let's play the minesweeper game.

You are given an m x n char matrix board representing the game board where:

  • 'M' represents an unrevealed mine.
  • 'E' represents an unrevealed empty square.
  • 'B' represents a revealed blank square that has no adjacent mines, considering above, below, left, right, and all 4 diagonals.
  • A digit from '1' to '8' represents how many mines are adjacent to this revealed square.
  • 'X' represents a revealed mine.

You are also given an integer array click where click = [clickr, clickc] represents the next click position among all the unrevealed squares, either 'M' or 'E'.

Return the board after revealing this position according to the following rules:

  • If a mine 'M' is revealed, then the game is over; change it to 'X'.
  • If an empty square 'E' with no adjacent mines is revealed, then change it to a revealed blank 'B', and all of its adjacent unrevealed squares should be revealed recursively.
  • If an empty square 'E' with at least one adjacent mine is revealed, then change it to a digit from '1' to '8' representing the number of adjacent mines.
  • Return the board when no more squares will be revealed.
Example 1
E E E E E
E E M E E
E E E E E
E E E E E
Inputboard = [["E","E","E","E","E"],["E","E","M","E","E"],["E","E","E","E","E"],["E","E","E","E","E"]], click = [3,0]
Output[["B","1","E","1","B"],["B","1","M","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]]
Clicking the unrevealed empty square at [3, 0] reveals connected blank squares and nearby mine counts while leaving the unrevealed mine unchanged.
Example 2
B 1 E 1 B
B 1 M 1 B
B 1 1 1 B
B B B B B
Inputboard = [["B","1","E","1","B"],["B","1","M","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]], click = [1,2]
Output[["B","1","E","1","B"],["B","1","X","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]]
Clicking the unrevealed mine at [1, 2] ends the game and changes that square from 'M' to 'X'.

Constraints

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 50
  • board[i][j] is either 'M', 'E', 'B', or a digit from '1' to '8'.
  • click.length == 2
  • 0 <= clickr < m
  • 0 <= clickc < n
  • board[clickr][clickc] is either 'M' or 'E'.

Asked at 8 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate