ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

542. 01 Matrix 广度优先算法 二维矩阵 python

2022-03-01 09:06:04  阅读:176  来源: 互联网

标签:01 Matrix python 矩阵 List range que visit mat


在这里插入图片描述在这里插入图片描述

题目搬运者

https://leetcode-cn.com/problems/01-matrix/
给定一个mxn的二进制矩阵,返回每个单元格最接近0的距离。
两个相邻单元格之间的距离为1。

思路 广度优先算法

  1. 从矩阵中是0的位置开始遍历周围一圈
  2. 将上一步的坐标加入队列,继续遍历周围一圈,有点类似”泛洪“操作
  3. 为了实验以上两点,需要一个队列将矩阵中是0的位置的坐标加入队列,还需要一个visit访问数组,对于被访问过的数组就不在进行操作。
  4. 因为改方法是从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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有