[Day4] 529. Minesweeper
529. Minesweeper
class Solution {
public char[][] updateBoard(char[][] board, int[] click) {
int ci = click[0];
int cj = click[1];
if (board[ci][cj]=='M') {
board[ci][cj]='X';
return board;
} else {
int[] i = {-1,-1,-1, 0,0, 1,1,1};
int[] j = {-1, 0, 1,-1,1,-1,0,1};
int adjacents = 0;
for (int k=0; k<8; k++) {
if (ci+i[k]<0 || ci+i[k]>=board.length) continue;
if (cj+j[k]<0 || cj+j[k]>=board[0].length) continue;
if (board[ci+i[k]][cj+j[k]]=='M') {
adjacents++;
}
}
if (adjacents==0) {
board[ci][cj]='B';
for (int k=0; k<8; k++) {
if (ci+i[k]<0 || ci+i[k]>=board.length) continue;
if (cj+j[k]<0 || cj+j[k]>=board[0].length) continue;
if (board[ci+i[k]][cj+j[k]] == 'E') updateBoard(board, new int[] {ci+i[k], cj+j[k]});
}
return board;
} else {
board[ci][cj]=(char)(adjacents+'0');
}
}
return board;
}
}
Accepted | 3 ms | 39.1 MB | java |