LeetCod每日一题(01 Matrix)

Given an m x n binary matrix mat, return the distance of the nearest 0 for each cell.

The distance between two adjacent cells is 1.

Example 1:

Input: mat = [[0,0,0],[0,1,0],[0,0,0]]
Output: [[0,0,0],[0,1,0],[0,0,0]]

Example 2:

Input: mat = [[0,0,0],[0,1,0],[1,1,1]]
Output: [[0,0,0],[0,1,0],[1,2,1]]

Constraints:

m == mat.length
n == mat[i].length
1 <= m, n <= 104
1 <= m * n <= 104
mat[i][j] is either 0 or 1.
There is at least one 0 in mat.


先标记所有0的位置,然后开始不停遍历整个矩阵,同时更新其中各个元素的最短距离,直到最后所有距离都是最短距离为止


impl Solution {
    pub fn update_matrix(mat: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
        let max = 10000;
        let mut dists = vec![vec![max; mat[0].len()]; mat.len()];
        for i in 0..mat.len() {
            for j in 0..mat[0].len() {
                if mat[i][j] == 0 {
                    dists[i][j] = 0;
                }
            }
        }
        let mut changed = true;
        while changed {
            changed = false;
            for i in 0..mat.len() {
                for j in 0..mat[0].len() {
                    let left = if j > 0 { dists[i][j - 1] } else { max };
                    let right = if j < mat[0].len() - 1 { dists[i][j + 1] } else { max };
                    let top = if i > 0 { dists[i - 1][j] } else { max };
                    let bottom = if i < mat.len() - 1 { dists[i + 1][j] } else { max };
                    let min = left.min(right.min(top.min(bottom))) + 1;
                    if dists[i][j] > min {
                        dists[i][j] = min;
                        changed = true
                    }
                }
            }
        }
        dists
    }
}
Matrix是一种数学工具,被广泛应用于各个领域。在课后题电子版中,我们可以利用Matrix来解决各种复杂的问题。比如,在线性代数中,我们可以使用Matrix来求解线性方程组,计算特征值和特征向量,进行矩阵的运算和变换等。在计算机图形学中,Matrix被用来进行3D图形的旋转、平移和缩放等操作。在统计学中,Matrix可以用于多元数据的分析和计算。另外,在工程领域,Matrix也常常用来描述物理系统的动态特性和稳定性。 课后题电子版可以通过Matrix来进行实际的计算演练,帮助学生更好地掌握Matrix的运用。通过一系列的练习题,学生可以加深对Matrix的理解,掌握Matrix的基本操作和运算规则,培养解决实际问题的能力。而且,在电子版中,学生可以通过互动式的学习方式,更加轻松地进行练习,同时还可以及时得到反馈和指导。 除了课后题电子版,Matrix在日常生活中也有着重要的应用。比如,在电子设备的图像处理中,Matrix用于对图像进行变换和处理;在金融领域,Matrix被用来分析投资组合的风险和收益;在人工智能中,Matrix则被用来进行神经网络的训练和模式识别。 总的来说,Matrix作为一种强大的数学工具,在课后题电子版和现实生活中都发挥着重要作用,帮助人们解决各种复杂的问题。通过学习和掌握Matrix的知识,我们能够更好地理解和应用数学在各个领域中的价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值