标签:01 Matrix python 矩阵 List range que visit mat
题目搬运者
https://leetcode-cn.com/problems/01-matrix/
给定一个mxn的二进制矩阵,返回每个单元格最接近0的距离。
两个相邻单元格之间的距离为1。
思路 广度优先算法
- 从矩阵中是0的位置开始遍历周围一圈
- 将上一步的坐标加入队列,继续遍历周围一圈,有点类似”泛洪“操作
- 为了实验以上两点,需要一个队列将矩阵中是0的位置的坐标加入队列,还需要一个visit访问数组,对于被访问过的数组就不在进行操作。
- 因为改方法是从0开始泛洪,即周围的距离就会使最小的,不需要进行min比较最小距离。
广度优先
class Solution(object):
def updateMatrix(self, mat):
"""
:type mat: List[List[int]]
:rtype: List[List[int]]
"""
n = len(mat) # x
m = len(mat[0]) # y
que = collections.deque()
visit = [[0] * m for _ in range(n)]
dist = [[0] * m for _ in range(n)]
for i in range(n):
for j in range(m):
if mat[i][j] == 0:
que.append([i, j])
visit[i][j] = 1 # 该位置被入队
# bfs
while que:
x, y = que.popleft()
for mx, my in [(x - 1, y), (x, y - 1), (x + 1, y), (x, y + 1)]:
if 0 <= mx < n and 0 <= my < m and visit[mx][my] == 0:
dist[mx][my] = dist[x][y] + 1
que.append((mx, my))
visit[mx][my] = 1
return dist
标签:01,Matrix,python,矩阵,List,range,que,visit,mat 来源: https://blog.csdn.net/Xg_316167164/article/details/123197046
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。