Given a matrix consists of 0 and 1, find the distance of the nearest 0 for each cell.
The distance between two adjacent cells is 1.
Example 1:
Input:
1 2 3
0 0 0 0 1 0 0 0 0
Output:
1 2 3
0 0 0 0 1 0 0 0 0
Example 2:
Input:
1 2 3
0 0 0 0 1 0 1 1 1
Output:
1 2 3
0 0 0 0 1 0 1 2 1
Note:
The number of elements of the given matrix will not exceed 10,000. There are at least one 0 in the given matrix. The cells are adjacent in only four directions: up, down, left and right.
for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (matrix[i][j] == 0) { queue.offer(new Point(i, j)); } else { matrix[i][j] = Integer.MAX_VALUE; } } }
while (!queue.isEmpty()) { Point p = queue.poll(); for (Point dir : DIRECTIONS) { int x = p.getX() + dir.getX(); int y = p.getY() + dir.getY(); if (x < 0 || y < 0 || x >= h || y >= w) { continue; } if (matrix[p.getX()][p.getY()] >= matrix[x][y]) { continue; }