bfs和dfs记忆化存储的数据是不一样的,
**bfs memo记录 走到[r] [c]用了几步**
**dfs memo记录 从[r] [c]开始走到终点的最长距离**
记忆化bfs: 1720 ms 15.6 MB
```python
class Solution:
def longestIncreasingPath(self, matrix: List[List[int]]) -> int:
rows = len(matrix)
cols = len(matrix[0])
memo = [[-1 for _ in range(cols)] for _ in range(rows)]
# 记录上次走到[r][c]的时候用了几步,如果这次又走到[r][c],
# 这次走到[r][c]的步数比上次还要少,那就没必要再走了,
# 如果这次走的步数多,就更新
def bfs(row, col):
queue = collections.deque()
queue.append((row, col, 1))
while queue:
r, c, step = queue.popleft()
for dr, dc in ((0, 1), (1, 0), (-1, 0), (0, -1)):
nr = r + dr
nc = c + dc
if 0<=nrmatrix[r][c]:
if step+1 <= memo[nr][nc]:
continue
queue.append((nr, nc, step+1))
memo[nr][nc] = step + 1
return step
ans = float("-inf")
for r in range(rows):
for c in range(cols):