题目描述
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
1 | 示例 1: |
提示:
给定矩阵的元素个数不超过 10000。
给定矩阵中至少有一个元素是 0。
矩阵中的元素只在四个方向上相邻: 上、下、左、右。
算法
(宽度优先搜索) O(nm)
定义一个队列,初始时将所有 0 元素的坐标进队;定义答案数组 res,0 元素位置的值为 0,其余为 -1。
对这个队列开始进行宽度优先搜索,每次扩展上下左右四个方向,若发现新的位置在 dis 中值为 -1,则更新新位置的答案为当前位置答案加 1。
时间复杂度
宽度优先搜索每个位置仅被遍历一次,故时间复杂度为 O(nm)。
空间复杂度
需要额外的空间存放队列和每个点的距离,故空间复杂度为 O(nm)。
python code
1 | class Solution: |