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;
};
 

Comments