美文网首页
LeetCode:529 SL

LeetCode:529 SL

作者: alex很累 | 来源:发表于2022-09-25 23:00 被阅读0次

    问题链接

    529 SL

    问题描述

    给你一个大小为 m x n 二维字符矩阵 board ,表示盘面,其中:
    M 代表一个 未挖出的 地雷,
    E 代表一个 未挖出的 空方块,
    B 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的 已挖出的 空白方块,
    数字(18)表示有多少地雷与这块 已挖出的 方块相邻,
    X 则表示一个 已挖出的 地雷。
    给你一个整数数组 click ,其中 click = [clickr, clickc] 表示在所有 未挖出的 方块(M 或者 E)中的下一个点击位置(clickr 是行下标,clickc 是列下标)。

    根据以下规则,返回相应位置被点击后对应的盘面:
    如果一个地雷M被挖出,游戏就结束了- 把它改为 X
    如果一个 没有相邻地雷 的空方块E被挖出,修改它为B,并且所有和其相邻的 未挖出 方块都应该被递归地揭露。
    如果一个 至少与一个地雷相邻 的空方块E被挖出,修改它为数字18 ,表示相邻地雷的数量。
    如果在此次点击中,若无更多方块可被揭露,则返回盘面。

    示例

    解题思路

    模拟法+深度优先搜索直接冲!

    代码示例(JAVA)

    class Solution {
        int[] arrX = {1, -1, 0, 0, 1, -1, 1, -1};
        int[] arrY = {0, 0, 1, -1, 1, -1, -1, 1};
    
        public char[][] updateBoard(char[][] board, int[] click) {
            dfs(board, click);
            return board;
        }
    
        public void dfs(char[][] board, int[] click) {
            int m = board.length, n = board[0].length;
            int x = click[0], y = click[1];
            if (board[x][y] == 'M') {
                board[x][y] = 'X';
                return;
            }
            int count = 0;
            for (int i = 0; i < arrX.length; i++) {
                if (x + arrX[i] >= 0 && x + arrX[i] < m && y + arrY[i] >= 0 && y + arrY[i] < n
                        && board[x + arrX[i]][y + arrY[i]] == 'M') {
                    count++;
                }
            }
            if (count != 0) {
                board[x][y] = (char) (count + 48);
            } else {
                board[x][y] = 'B';
                for (int i = 0; i < arrX.length; i++) {
                    if (x + arrX[i] >= 0 && x + arrX[i] < m && y + arrY[i] >= 0 && y + arrY[i] < n
                            && (board[x + arrX[i]][y + arrY[i]] == 'M' || board[x + arrX[i]][y + arrY[i]] == 'E')) {
                        dfs(board, new int[]{x + arrX[i], y + arrY[i]});
                    }
                }
            }
        }
    }
    

    执行结果

    相关文章

      网友评论

          本文标题:LeetCode:529 SL

          本文链接:https://www.haomeiwen.com/subject/nlhtartx.html