
力扣529:扫雷游戏
发布日期:2021-05-08 20:00:20
浏览次数:21
分类:精选文章
本文共 1675 字,大约阅读时间需要 5 分钟。
题目描述
给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。
现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:- 如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。
- 如果一个没有相邻地雷的空方块(‘E’)被挖出,修改它为(‘B’),并且所有和其相邻的未挖出方块都应该被递归地揭露。
- 如果一个至少与一个地雷相邻的空方块(‘E’)被挖出,修改它为数字(‘1’到’8’),表示相邻地雷的数量。
- 如果在此次点击中,若无更多方块可被揭露,则返回面板。

题意明了,直接上代码
class Solution { public char[][] updateBoard(char[][] board, int[] click) { int x = click[0] , y = click[1]; //如果所点击的点正好是雷,直接修改为 X 返回,反之 遍历周围的 8 个顶点 //但如果周围没有雷,修改当前格子为 B ,返回 if(board[x][y] == 'M'){ board[x][y] = 'X'; } else { dfs(board , x , y); } return board; } public void dfs(char[][] board , int x , int y){ // 左,左上,上,右上,右,右下,下,左下 8个方向 int[] dx = { 0 , -1 , -1 , -1 , 0 , 1 , 1 , 1}; int[] dy = { -1 , -1 , 0 , 1 , 1 , 1 , 0 , -1}; //先统计一下当前点周围有多少颗雷 int cnt = 0; for(int i = 0 ; i < 8 ; i ++){ int nx = x + dx[i]; int ny = y + dy[i]; if(nx < 0 || nx >= board.length || ny < 0 || ny >= board[0].length) continue; //越界 if(board[nx][ny] == 'M') cnt ++; } if (cnt > 0) { board[x][y] = (char)(cnt + '0'); return; } //如果周围没有雷,设置为 B board[x][y] = 'B'; for(int i = 0 ; i < 8 ; i ++){ int nx = dx[i] + x; int ny = dy[i] + y; if(nx < 0 || nx >= board.length || ny < 0 || ny >= board[0].length || board[nx][ny] != 'E') continue; //越界, dfs(board , nx , ny); } }}
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月10日 20时44分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python大神编程常用4大工具,你用过几个?
2021-05-09
一文带你了解图神经网络
2021-05-09
9个常用ES6特性归纳(一般用这些就够了)
2021-05-09
3D渲染集群,你了解多少?
2021-05-09
除了方文山,用TA你也能帮周杰伦写歌词了
2021-05-09
关于GO语言,这篇文章讲的很明白
2021-05-09
华为云FusionInsight湖仓一体解决方案的前世今生
2021-05-09
大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
2021-05-09
C++调用Go方法的字符串传递问题及解决方案
2021-05-09
云原生2.0时代下,DevOps实践如何才能更加高效敏捷?
2021-05-09
技巧收藏|10个JavaScript常用数组操作方法
2021-05-09
两种端到端通用目标检测方法
2021-05-09
云小课 | 守护网络安全不是问题,iptables的四表五链为你开启“八卦阵”
2021-05-09
LiteOS内核源码分析:任务栈信息
2021-05-09
23种设计模式之迭代器模式
2021-05-09
23种设计模式之组合模式
2021-05-09
mysql zip安装
2021-05-09
mysql修改密码
2021-05-09
virtualbox中 Kali Linux安装增强功能
2021-05-09
virtualbox中 Ubuntu挂载共享文件夹
2021-05-09