Advertisement
Distance of nearest cell having 1
JavaView on GFG
Distance of nearest cell having 1.java
Java
import java.util.*;
class Solution {
public ArrayList<ArrayList<Integer>> nearest(int[][] grid) {
int n = grid.length;
int m = grid[0].length;
int[][] dist = new int[n][m];
boolean[][] visited = new boolean[n][m];
Queue<int[]> q = new LinkedList<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (grid[i][j] == 1) {
q.add(new int[] { i, j, 0 });
visited[i][j] = true;
}
}
}
int[] dx = { 1, -1, 0, 0 };
int[] dy = { 0, 0, 1, -1 };
while (!q.isEmpty()) {
int[] curr = q.poll();
int i = curr[0];
int j = curr[1];
int d = curr[2];
dist[i][j] = d;
for (int k = 0; k < 4; k++) {
int ni = i + dx[k];
int nj = j + dy[k];
if (ni >= 0 && ni < n && nj >= 0 && nj < m && !visited[ni][nj]) {
visited[ni][nj] = true;
q.add(new int[] { ni, nj, d + 1 });
}
}
}
ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
for (int i = 0; i < n; i++) {
ArrayList<Integer> row = new ArrayList<>();
for (int j = 0; j < m; j++)
row.add(dist[i][j]);
ans.add(row);
}
return ans;
}
}Advertisement
Was this solution helpful?