题目
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
示例 1: 输入:
0 0 0
0 1 0
0 0 0
输出:
0 0 0
0 1 0
0 0 0
示例 2: 输入:
0 0 0
0 1 0
1 1 1
输出:
0 0 0
0 1 0
1 2 1
注意:
给定矩阵的元素个数不超过 10000。
给定矩阵中至少有一个元素是 0。
矩阵中的元素只在四个方向上相邻: 上、下、左、右。
解题思路分析
1、动态规划;时间复杂度O(n^2),空间复杂度O(n^2)
func updateMatrix(matrix [][]int) [][]int {n := len(matrix)m := len(matrix[0])dp := make([][]int, n)for i := 0; i < n; i++ {dp[i] = make([]int, m)for j := 0; j < m; j++ {if matrix[i][j] == 1 {dp[i][j] = math.MaxInt32 / 10if i > 0 {dp[i][j] = min(dp[i][j], dp[i-1][j]+1)}if j > 0 {dp[i][j] = min(dp[i][j],