Question 3 0-1 Matrix
High Level
Method KBFS
// Some code
public int[][] updateMatrix(int[][] matrix) {
// assume matrix is valid
Deque<Point> queue = new ArrayDeque<>();
Set<Point> visited = new HashSet<>();
// KBFS Generate all possible starting source node
for (int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
Point new Point = new Point(i, j);
queue.offer(newPoint);
visited.add(newPoint);
}
}
}
int level = 0;
while (!queue.isEmpty()) {
int size = queue.size();
for (int i = 0; i < size; i++) {
Point cur = queue.poll();
matrix[cur.x][cur.y] = level;
for (int[] dir: DIRS) {
int neiX = cur.x + dir[0];
int neiY = cur.y + dir[1];
if (isValid(matrix, neiX, neiY) && visited.add(nei)) {
queue.offer(nei);
}
}
}
level++;
}
return matrix;
}Last updated