Update README.md

This commit is contained in:
bt3gl 2023-08-08 16:18:57 -07:00 committed by GitHub
parent d574e9627d
commit 0f85ea546c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -208,3 +208,56 @@ def iterative_dfs(graph, v, discovered):
stack.append(u) stack.append(u)
``` ```
<br>
---
### matrix bfs
<br>
* 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 (`2^31 - 1 = 2147483647` to represent `INF`)
* fill empty room with the distance to its nearest gate. if it is impossible to reach a gate, it should be filled with `INF`.
```python
def matrix_bfs(rooms) -> None:
m = len(rooms)
if m == 0:
return rooms
n = len(rooms[0])
GATE = 0
EMPTY = 2147483647
DIRECTIONS = ((1, 0), (-1, 0), (0, 1), (0, -1))
queue = collections.deque()
for i in range(m):
for j in range(n):
if rooms[i][j] == GATE:
q.append((i, j))
while queue:
row, col = queue.popleft()
for (x, y) in DIRECTIONS:
r = row + x
c = col + y
if (r < 0) or (c < 0) or (r >= m) or (c >= n) or rooms[r][c] != EMPTY:
continue
rooms[r][c] = rooms[row][col] + 1
queue.append((r, c))
```