You are given an m x n grid rooms 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 2^31 - 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. Return the filled grid.
Example 1
Input: rooms = [[2147483647,-1,0,2147483647],[2147483647,2147483647,2147483647,-1],[2147483647,-1,2147483647,-1],[0,-1,2147483647,2147483647]]
Output: [[3,-1,0,1],[2,2,1,-1],[1,-1,2,-1],[0,-1,3,4]]
Explanation: Each empty room gets the number of steps to its nearest gate, walking around walls. For example, the top-left room is 3 steps from the gate in the bottom-left corner, and the bottom-right room is 4 steps from the gate at the top.
Example 2
Input: rooms = [[-1]]
Output: [[-1]]
Explanation: The only cell is a wall, so nothing changes.
Example 3
Input: rooms = [[0]]
Output: [[0]]
Explanation: The only cell is a gate, so nothing needs to be filled.
Start BFS from every gate at once. The first time BFS reaches an empty room, it does so along the shortest path, so that room's distance is final.
Run checks all cases above. Submit evaluates all test cases.