[leetcode] 529. Minesweeper

网友投稿 586 2022-10-02

[leetcode] 529. Minesweeper

[leetcode] 529. Minesweeper

Description

Let’s play the minesweeper game (Wikipedia, online game)!

You are given a 2D char matrix representing the game board. ‘M’ represents an unrevealed mine, ‘E’ represents an unrevealed empty square, ‘B’ represents a revealed blank square that has no adjacent (above, below, left, right, and all 4 diagonals) mines, digit (‘1’ to ‘8’) represents how many mines are adjacent to this revealed square, and finally ‘X’ represents a revealed mine.

Now given the next click position (row and column indices) among all the unrevealed squares (‘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 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 (‘1’ to ‘8’) representing the number of adjacent mines. Return the board when no more squares will be revealed.

Example 1:

Input: [['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']]Explanation:

Example 2:

Input: [['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']]Explanation:

Note:

The range of the input matrix’s height and width is [1,50].The click position will only be an unrevealed square (‘M’ or ‘E’), which also means the input board contains at least one clickable square.The input board won’t be a stage when game is over (some mines have been revealed).For simplicity, not mentioned rules should be ignored in this problem. For example, you don’t need to reveal all the unrevealed mines when the game is over, consider any cases that you will win the game or flag any squares.

分析

题目的意思是:返回最终的扫雷二维数组。

代码

class Solution {public: vector> updateBoard(vector>& board, vector& click) { if(board.empty()) return {}; int m=board.size(); int n=board[0].size(); int row=click[0]; int col=click[1]; int cnt=0; if(board[row][col]=='M'){ board[row][col]='X'; }else{ for(int i=-1;i<2;i++){ for(int j=-1;j<2;j++){ int x=i+row; int y=col+j; if(x<0||x>=m||y<0||y>=n) continue; if(board[x][y]=='M'){ cnt++; } } } if(cnt>0){ board[row][col]=cnt+'0'; }else{ board[row][col]='B'; for(int i=-1;i<2;i++){ for(int j=-1;j<2;j++){ int x=i+row; int y=col+j; if(x<0||x>=m||y<0||y>=n) continue; if(board[x][y]=='E'){ vector nextPos{x,y}; updateBoard(board,nextPos); } } } } } return board; }};

参考文献

​​[LeetCode] Minesweeper 扫雷游戏​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序性能优化的几点实践技巧(小程序体验优化的建议)
下一篇:[leetcode] 783. Minimum Distance Between BST Nodes
相关文章

 发表评论

暂时没有评论,来抢沙发吧~