mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 20:26:07 -04:00
Update README.md
This commit is contained in:
parent
d574e9627d
commit
0f85ea546c
@ -208,3 +208,56 @@ def iterative_dfs(graph, v, discovered):
|
||||
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))
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user