Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- final int[][] adjacent = {{-1,-1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1},{1, -1}, {1, 0}, {1, 1}};
- public char[][] updateBoard(char[][] board, int[] click) {
- if(board == null || click == null ||
- board.length == 0 || board[0].length == 0 || click.length == 0)
- return board;
- int i = click[0], j = click[1];
- if(board[i][j] == 'M'){
- board[i][j] = 'X';
- return board;
- }
- dfs(board, i, j);
- return board;
- }
- void dfs(char[][] board, int i, int j){
- if(i < 0 || j < 0 || i >= board.length || j >= board[0].length
- || board[i][j] != 'E')
- return;
- board[i][j] = countM(board, i, j);
- if(board[i][j] != 'B') return;
- for(int[] dir: adjacent)
- dfs(board, i + dir[0], j + dir[1]);
- }
- char countM(char[][] board, int i, int j){
- int count = 0;
- for(int[] dir: adjacent){
- int r = i + dir[0];
- int c = j + dir[1];
- if(r >=0 && c >=0
- && r < board.length && c < board[0].length
- && board[r][c] == 'M')
- count++;
- }
- return (count == 0) ? 'B' : ((char) ('0' + count));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement