Count Unguarded Cells in the Grid LeetCode solution in Java

1
class Solution {
2
public int countUnguarded(int m, int n, int[][] guards, int[][] walls) {
3
int[][] dirs = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
4
char[][] grid = new char[m][n];
5
int count = m * n - guards.length - walls.length;
6
for (int[] wall : walls) {
7
int x = wall[0], y = wall[1];
8
grid[x][y] = 'W';
9
}
10
for (int[] guard : guards) {
11
int x = guard[0], y = guard[1];
12
grid[x][y] = 'G';
13
}
14
for (int[] point : guards) {
15
for (int dir[] : dirs) {
16
int x = point[0] + dir[0];
17
int y = point[1] + dir[1];
18
while (!(x < 0 || y < 0 || x >= m || y >= n || grid[x][y] == 'G' || grid[x][y] == 'W')) {
19
if (grid[x][y] != 'P') count--;
20
grid[x][y] = 'P';
21
x += dir[0];
22
y += dir[1];
23
}
24
}
25
}
26
return count;
27
}
28
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0