Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.29 KB | None | 0 0
  1. class Solution {
  2.     final int[][] adjacent = {{-1,-1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1},{1, -1}, {1, 0}, {1, 1}};
  3.        
  4.     public char[][] updateBoard(char[][] board, int[] click) {
  5.         if(board == null || click == null ||
  6.            board.length == 0 || board[0].length == 0 || click.length == 0)
  7.             return board;
  8.         int i = click[0], j = click[1];
  9.         if(board[i][j] == 'M'){
  10.             board[i][j] = 'X';
  11.             return board;
  12.         }
  13.         dfs(board, i, j);
  14.         return board;
  15.     }
  16.    
  17.     void dfs(char[][] board, int i, int j){
  18.         if(i < 0 || j < 0 || i >= board.length || j >= board[0].length
  19.                || board[i][j] != 'E')
  20.             return;
  21.         board[i][j] = countM(board, i, j);
  22.         if(board[i][j] != 'B') return;
  23.         for(int[] dir: adjacent)
  24.             dfs(board, i + dir[0], j + dir[1]);
  25.     }
  26.    
  27.     char countM(char[][] board, int i, int j){
  28.         int count = 0;
  29.         for(int[] dir: adjacent){
  30.             int r = i + dir[0];
  31.             int c = j + dir[1];
  32.             if(r >=0 && c >=0
  33.                && r < board.length && c < board[0].length
  34.                && board[r][c] == 'M')
  35.                 count++;
  36.         }
  37.         return (count == 0) ? 'B' : ((char) ('0' + count));
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement