Matrix: Wall and Gates - mbhushan/codique GitHub Wiki

Walls and Gates

Question

You are given a m x n 2D grid initialized with these three possible values.

  • -1: A wall or an obstacle.
  • 0: A gate.
  • INF: Infinity means an empty room.

We use the value 231 - 1 = 2147483647 to represent INF as you may assume that the distance to a gate is less than 2147483647. Fill each empty room with the distance to its nearest gate. If it is impossible to reach a gate, it should be filled with INF. For example, given the 2D grid:

INF -1 0 INF

INF INF INF -1

INF -1 INF -1

0 -1 INF INF

After running your function, the 2D grid should be:

3 -1 0 1

2 2 1 -1

1 -1 2 -1

0 -1 3 4

High Level Approach:

From each gate recursively update the minimum distances of the room in a depth first fashion.

  • Time Complexity: O(n^2)

Working Solution:

WallAndGates.java

Send me a pull request if you feel this solution can be improved further.