欢迎24级新生

2225. 01 Matrix (Medium)

给定一个由 0 和 1 组成的二维矩阵,求每个位置到最近的 0 的距离。

输入

输入是一个二维 0-1 数组

输出

输出是一个同样大小的非负整数数组,表示每个位置到最近的 0的距离。

样例

标准输入 复制文本
[[0,0,0],
[0,1,0],
[1,1,1]]
标准输出 复制文本
[[0,0,0],
[0,1,0],
[1,2,1]]

提示

一般来说,因为这道题涉及到四个方向上的最近搜索,所以很多人的第一反应可能会是广度优先搜索。但是对于一个大小 O(mn) 的二维数组,对每个位置进行四向搜索,最坏情况的时间复杂度(即全是 1)会达到恐怖的O(m2n2)。一种办法是使用一个 dp 数组做 memoization,使得广度优先搜索不会重复遍历相同位置;另一种更简单的方法是,我们从左上到右下行一次动态搜索,再从右下到左上进行一次动态搜索。两次动态搜索即可完成四个方向上的查找。

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 0
通过 0