题目链接
英文链接:https://leetcode.com/problems/01-matrix/
中文链接:https://leetcode-cn.com/problems/01-matrix/
题目详述
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
示例 1:
输入:
1 | 0 0 0 |
输出:
1 | 0 0 0 |
示例 2:
输入:
1 | 0 0 0 |
输出:
1 | 0 0 0 |
注意:
- 给定矩阵的元素个数不超过 10000。
- 给定矩阵中至少有一个元素是 0。
- 矩阵中的元素只在四个方向上相邻: 上、下、左、右。
题目详解
BFS。
- BFS 相较于 DFS,一个很重要的特性的就是可以求“最小值”,如最短距离、最小步数等。
- BFS 的队列可以分层来看,一层层向外扩展:第一次先把所有距离为 0 的点加入队列,第二次把所有距离为 1 的点加入队列,依此类推,这样求出的值就是最小值。
1 | public class LeetCode_00542 { |
也可以运用动态规划,由于每个点距离 0 最近的距离来源于上下左右四个方向,为了避免循环依赖,我们可以从从左上方往右下方扫一遍,再从右下方往左上方扫一遍,这样可以求得每个点的最小距离。
1 | public class LeetCode_00542 { |