leetcode529. 扫雷游戏(dfs)
让我们一起来玩扫雷游戏!
给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。
现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:
如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。
如果一个没有相邻地雷的空方块(‘E’)被挖出,修改它为(‘B’),并且所有和其相邻的方块都应该被递归地揭露。
如果一个至少与一个地雷相邻的空方块(‘E’)被挖出,修改它为数字(‘1’到’8’),表示相邻地雷的数量。
如果在此次点击中,若无更多方块可被揭露,则返回面板。
示例 1:
输入:
[[‘E’, ‘E’, ‘E’, ‘E’, ‘E’],
[‘E’, ‘E’, ‘M’, ‘E’, ‘E’],
[‘E’, ‘E’, ‘E’, ‘E’, ‘E’],
[‘E’, ‘E’, ‘E’, ‘E’, ‘E’]]
Click : [3,0]
输出:
[[‘B’, ‘1’, ‘E’, ‘1’, ‘B’],
[‘B’, ‘1’, ‘M’, ‘1’, ‘B’],
[‘B’, ‘1’, ‘1’, ‘1’, ‘B’],
[‘B’, ‘B’, ‘B’, ‘B’, ‘B’]]
代码
class Solution {public char[][] updateBoard(char[][] board, int[] click) {int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};if(board[click[0]][click[1]]=='M')board[click[0]][click[1]]='X';else if(board[click[0]][click[1]]=='E')update(board,click[0],click[1],dir);return board;}public void update(char[][] board, int x,int y,int[][] dir) {int sum=0;for(int[] d:dir)//检查周围有没有地雷{int nextX=d[0]+x,nextY=d[1]+y;if(nextX<0||nextY>=board[0].length||nextY<0||nextX>=board.length) continue;if(board[nextX][nextY]=='M') sum++;}if(sum==0) board[x][y]='B';else {//有地雷就停止遍历并且改变boardboard[x][y]=(char)( sum+'0');return;}for(int[] d:dir)//继续遍历可能的路径{int nextX=d[0]+x,nextY=d[1]+y;if(nextX<0||nextY>=board[0].length||nextY<0||nextX>=board.length||board[nextX][nextY]!='E') continue;update(board, nextX, nextY, dir);}}
}
leetcode529. 扫雷游戏(dfs)相关推荐
- Leetcode529. 扫雷游戏
529. 扫雷游戏 难度中等130收藏分享切换为英文关注反馈 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没 ...
- [leetcode]529. 扫雷游戏 DFS递归、BFS、DFS栈实现
https://leetcode-cn.com/problems/minesweeper/ DFS步骤: 1.给的x,y坐标位置是地雷board[x][y] == 'M',把那个位置标记为地雷·boa ...
- LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷, 'E' 代表一个未挖出的空方 ...
- LeetCode 力扣 529. 扫雷游戏 minesweeper DFS
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 529. 扫雷游戏 题目描述 ...
- DFS深度优先搜索 岛屿问题 涂色问题 扫雷游戏
题目:https://leetcode-cn.com/problems/number-of-islands/ 参考:https://leetcode-cn.com/problems/number-of ...
- python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...
Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...
- java扫雷教程_java实现简单扫雷游戏
本文实例为大家分享了java实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 package com.test.swing; import java.awt.event.ActionEvent; ...
- leetcode_529. 扫雷游戏 python
目录 一.题目内容 二.解题思路 三.代码 一.题目内容 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没有相 ...
- leetcode: 529. 扫雷游戏
529. 扫雷游戏 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/number-of-islands/ 让我们一起来玩扫雷游戏! 给你一个大小为 m ...
最新文章
- 手机支架3d打印模型_3D打印工艺模型制造
- 802.1x 客户端获取ip过程 很详细
- 超级任天堂游戏模拟器被曝安全漏洞
- file control
- Kubernetes(六) - Secret和私有仓库认证
- windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式
- 在Windows上编译MongoDB C Driver
- IDBI的完整格式是什么?
- Linux统一编程接口,restful接口设计规范总结
- Python 实现视频爬取下载及断点续传优化、异步下载
- 聊一聊2D地图的迷雾效果
- Android Content Providers(二)——Contacts Provider
- 五笔字根表识别码图_五笔字根表图
- 数字基带传信号传输与码间串扰
- 野火linux开发板6ULL,野火i.MX 6ULL开发板 嵌入式Linux开发板 nand版本
- 该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。
- Android 9 (P) recovery升级Map of ‘@/cache/recovery/block.map‘ failed问题分析指南
- docker 访问宿主机网络
- uniapp微信小程序实现对地图多点或单点标记(@莫成尘)
- 聊聊这个本不存在的 “元宇宙”