Leetcode•Oct 10, 2026
As Far from Land as Possible
Hazrat Ali
Leetcode
Given an n x n grid containing only values 0 and 1, where 0 represents water and 1 represents land, find a water cell such that its distance to the nearest land cell is maximized, and return the distance. If no land or water exists in the grid, return -1.
The distance used in this problem is the Manhattan distance: the distance between two cells (x0, y0) and (x1, y1) is |x0 - x1| + |y0 - y1|.
Example 1:
Input: grid = [[1,0,1],[0,0,0],[1,0,1]] Output: 2 Explanation: The cell (1, 1) is as far as possible from all the land with distance 2.
Example 2:
Input: grid = [[1,0,0],[0,0,0],[0,0,0]] Output: 4 Explanation: The cell (2, 2) is as far as possible from all the land with distance 4.
Solution
var maxDistance = function(grid) {
const n = grid.length;
const queue = [];
let front = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (grid[i][j] === 1) {
queue.push([i, j]);
}
}
}
if (queue.length === 0 || queue.length === n * n) {
return -1;
}
const directions = [
[1, 0],
[-1, 0],
[0, 1],
[0, -1]
];
let distance = -1;
while (front < queue.length) {
const size = queue.length - front;
distance++;
for (let k = 0; k < size; k++) {
const [x, y] = queue[front++];
for (const [dx, dy] of directions) {
const nx = x + dx;
const ny = y + dy;
if (
nx >= 0 && nx < n &&
ny >= 0 && ny < n &&
grid[nx][ny] === 0
) {
grid[nx][ny] = 1;
queue.push([nx, ny]);
}
}
}
}
return distance;
};