lifeiteng

361. Bomb Enemy

Sep 12th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.44 KB | None | 0 0
  1. class Solution {
  2.     public int maxKilledEnemies(char[][] grid) {
  3.         if(grid == null || grid.length < 1 || grid[0].length < 1) return 0;
  4.         int m = grid.length, n = grid[0].length, re = 0;
  5.         int[][] L = new int[m][n], R = new int[m][n], U = new int[m][n], D = new int[m][n];
  6.         for(int i = 0; i < m; i++)
  7.         {
  8.             for(int j = 1; j < n; j++)
  9.             {
  10.                 L[i][j] = (grid[i][j - 1] == 'E' ? 1 : 0) + L[i][j - 1];
  11.                 if(grid[i][j] == 'W') L[i][j] = 0;
  12.             }
  13.             for(int j = n - 2; j >= 0; j--)
  14.             {
  15.                 R[i][j] = (grid[i][j + 1] == 'E' ? 1 : 0) + R[i][j + 1];
  16.                 if(grid[i][j] == 'W') R[i][j] = 0;
  17.             }
  18.         }
  19.         for(int j = 0; j < n; j++)
  20.         {
  21.             for(int i = 1; i < m; i++)
  22.             {
  23.                 U[i][j] = (grid[i - 1][j] == 'E' ? 1 : 0) + U[i - 1][j];
  24.                 if(grid[i][j] == 'W') U[i][j] = 0;
  25.             }
  26.             for(int i = m - 2; i >= 0; i--)
  27.             {
  28.                 D[i][j] = (grid[i + 1][j] == 'E' ? 1 : 0) + D[i + 1][j];
  29.                 if(grid[i][j] == 'W') D[i][j] = 0;
  30.             }            
  31.         }
  32.         for(int i = 0; i < m; i++)
  33.         {
  34.             for(int j = 0; j < n; j++)
  35.             {
  36.                 if(grid[i][j] == '0') re = Math.max(re, L[i][j] + D[i][j] + U[i][j] + R[i][j]);
  37.             }
  38.         }
  39.         return re;
  40.     }
  41. }
Add Comment
Please, Sign In to add comment