Problem · Array
Minesweeper Board Update
Learn this problemProblem statement
You are given a rectangular Minesweeper board containing unrevealed empty cells E and unrevealed mines M, plus a clicked coordinate [row, column].
- If the clicked cell is a mine, change it to
Xand return the board. - Otherwise reveal the clicked empty region. For an unrevealed empty cell, count mines in all eight neighboring positions.
- If the count is positive, replace the cell with the digit
1through8and do not expand through it. - If the count is zero, replace the cell with
Band continue revealing all adjacent unrevealed empty cells.
Mutate and return the board after the click.
Function
updateBoard(board: char[][], click: int[]) → char[][]Examples
Example 1
board = [["E","E","E","E","E"],["E","E","M","E","E"],["E","E","E","E","E"],["E","E","E","E","E"]]click = [3,0]return = [["B","1","E","1","B"],["B","1","M","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]]The click opens a zero-mine region. Numbered boundary cells stop expansion, and the unrevealed cell behind the mine remains E.
Example 2
board = [["M","E"],["E","E"]]click = [0,0]return = [["X","E"],["E","E"]]Clicking the mine marks only that cell as X.
Example 3
board = [["M","E"],["E","E"]]click = [1,1]return = [["M","E"],["E","1"]]The clicked cell touches one mine, so it becomes 1 and expansion stops immediately.
Constraints
1 <= board.length, board[0].length <= 300- Every row has the same length.
- Each board cell is
EorM. clickcontains a valid board coordinate.