529. Minesweeper
作者:互联网
https://leetcode-cn.com/problems/minesweeper/
[bug]
class Solution {
char[][] upd;
char[][] board;
int w, h;
int[][] dirs = {
{-1,-1},
{-1,0},
{-1,1},
{0, -1},
{0, 1},
{1, -1},
{1, 0},
{1, 1}
};
public char[][] updateBoard(char[][] board, int[] click) {
w = board[0].length;
h = board.length;
this.board = board;
upd = new char[h][w];
for(int y=0;y<h;y++){
for(int x=0;x<w;x++){
upd[y][x] = board[y][x];
}
}
int y = click[0];
int x = click[1];
dfs(y, x);
return upd;
}
void dfs(int y, int x){
if(board[y][x]=='M'){
upd[y][x] = 'X';
return;
}
//space
int cnt=0;
for(int[] dir: dirs){
if(bound(y+dir[0], x+dir[1])){
continue;
}
if(board[y+dir[0]][x+dir[1]]=='M'){
cnt++;
}
}
if(cnt>0){
upd[y][x] = (char)(cnt+'0');
return;
}
upd[y][x]= 'B';
for(int[] dir: dirs){
if(bound(y+dir[0], x+dir[1])){
continue;
}
dfs(y+dir[0], x+dir[1]);
}
}
boolean bound(int y, int x){
return x<0 || x>=w || y<0 || y>=h;
}
}
标签:cnt,int,Minesweeper,upd,char,board,529,dir 来源: https://blog.csdn.net/laohixdxm00/article/details/118029764