让我们一起来玩扫雷游戏!

给定一个代表游戏板的二维字符矩阵。 ‘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)相关推荐

  1. Leetcode529. 扫雷游戏

    529. 扫雷游戏 难度中等130收藏分享切换为英文关注反馈 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没 ...

  2. [leetcode]529. 扫雷游戏 DFS递归、BFS、DFS栈实现

    https://leetcode-cn.com/problems/minesweeper/ DFS步骤: 1.给的x,y坐标位置是地雷board[x][y] == 'M',把那个位置标记为地雷·boa ...

  3. LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷, 'E' 代表一个未挖出的空方 ...

  4. LeetCode 力扣 529. 扫雷游戏 minesweeper DFS

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 529. 扫雷游戏 题目描述 ...

  5. DFS深度优先搜索 岛屿问题 涂色问题 扫雷游戏

    题目:https://leetcode-cn.com/problems/number-of-islands/ 参考:https://leetcode-cn.com/problems/number-of ...

  6. python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...

    Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...

  7. java扫雷教程_java实现简单扫雷游戏

    本文实例为大家分享了java实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 package com.test.swing; import java.awt.event.ActionEvent; ...

  8. leetcode_529. 扫雷游戏 python

    目录 一.题目内容 二.解题思路 三.代码 一.题目内容 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没有相 ...

  9. leetcode: 529. 扫雷游戏

    529. 扫雷游戏 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/number-of-islands/ 让我们一起来玩扫雷游戏! 给你一个大小为 m ...

最新文章

  1. 手机支架3d打印模型_3D打印工艺模型制造
  2. 802.1x 客户端获取ip过程 很详细
  3. 超级任天堂游戏模拟器被曝安全漏洞
  4. file control
  5. Kubernetes(六) - Secret和私有仓库认证
  6. windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式
  7. 在Windows上编译MongoDB C Driver
  8. IDBI的完整格式是什么?
  9. Linux统一编程接口,restful接口设计规范总结
  10. Python 实现视频爬取下载及断点续传优化、异步下载
  11. 聊一聊2D地图的迷雾效果
  12. Android Content Providers(二)——Contacts Provider
  13. 五笔字根表识别码图_五笔字根表图
  14. 数字基带传信号传输与码间串扰
  15. 野火linux开发板6ULL,野火i.MX 6ULL开发板 嵌入式Linux开发板 nand版本
  16. 该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。
  17. Android 9 (P) recovery升级Map of ‘@/cache/recovery/block.map‘ failed问题分析指南
  18. docker 访问宿主机网络
  19. uniapp微信小程序实现对地图多点或单点标记(@莫成尘)
  20. 聊聊这个本不存在的 “元宇宙”

热门文章

  1. shell编程题(三)
  2. Array | 867. Transpose Matrix
  3. Java集合(一):Java集合概述
  4. vSphere HA 原理与配置
  5. virtual和override
  6. 基于ARM Cortex-M0+ 的Bootloader 参考
  7. Java 集合 之 Vector
  8. 连接sqlexpress
  9. Aspx 页面生命周期
  10. SELECT语句,去除某个字段的重复信息