1572.矩阵对角线元素的和
链接:1572.矩阵对角线元素的和
难度:Easy
标签:数组、矩阵
简介:给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。
题解 1 - rust
- 编辑时间:2023-08-11
- 执行用时:4ms
- 内存消耗:2.13MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn diagonal_sum(mat: Vec<Vec<i32>>) -> i32 {
        mat.into_iter().enumerate().fold(0, |mut sum, (i, row)| {
            sum += row[i] + row[row.len() - 1 - i];
            if i == row.len() - 1 - i {
                sum -= row[i];
            }
            sum
        })
    }
}
题解 2 - python
- 编辑时间:2023-08-11
- 执行用时:44ms
- 内存消耗:15.88MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def diagonalSum(self, mat: List[List[int]]) -> int:
        n = len(mat)
        res = 0
        for i in range(n):
            res += mat[i][i] + mat[i][n - i - 1]
            if i == n - i - 1:
                res -= mat[i][i]
        return res
题解 3 - cpp
- 编辑时间:2023-08-11
- 执行用时:12ms
- 内存消耗:10.8MB
- 编程语言:cpp
- 解法介绍:遍历,只记录最小值和第二小值。
class Solution {
public:
    int diagonalSum(vector<vector<int>>& mat) {
        int n = mat.size(), res = 0;
        for (int i = 0; i < n; i++) {
            res += mat[i][i] + mat[i][n - i - 1];
            if (i == n - i - 1) res -= mat[i][i];
        }
        return res;
    }
};