列表

详情


1572. 矩阵对角线元素的和

给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。

请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。

 

示例  1:

输入:mat = [[1,2,3],
            [4,5,6],
            [7,8,9]]
输出:25
解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25
请注意,元素 mat[1][1] = 5 只会被计算一次。

示例  2:

输入:mat = [[1,1,1,1],
            [1,1,1,1],
            [1,1,1,1],
            [1,1,1,1]]
输出:8

示例 3:

输入:mat = [[5]]
输出:5

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int diagonalSum(vector<vector<int>>& mat) { } };

java 解法, 执行用时: 0 ms, 内存消耗: 42.6 MB, 提交时间: 2023-08-11 09:20:29

class Solution {
    public int diagonalSum(int[][] mat) {
        int ans = 0;
        int n = mat.length;
        int i = 0;
        for (int[] m : mat ) {
            ans += m[i] + m[n-1-i];
            i++;
        }
        if ( n % 2 == 0 ) {
            return ans;
        }
        int mid = n / 2;
        return ans - mat[mid][mid];
    }
}

php 解法, 执行用时: 32 ms, 内存消耗: 20.3 MB, 提交时间: 2023-08-11 07:51:20

class Solution {

    /**
     * @param Integer[][] $mat
     * @return Integer
     */
    function diagonalSum($mat) {
        $ans = 0;
        $n = count($mat);
        foreach ( $mat as $i => $m ) {
            $ans += $m[$i] + $m[$n-1-$i];
        }
        if ( $n % 2 == 0 ) {
            return $ans;
        }
        $mid = intval($n / 2);
        return $ans - $mat[$mid][$mid];
    }
}

python3 解法, 执行用时: 36 ms, 内存消耗: 16.3 MB, 提交时间: 2023-08-11 07:47:18

class Solution:
    def diagonalSum(self, mat: List[List[int]]) -> int:
        ans = 0
        n = len(mat)
        for i, m in enumerate(mat):
            ans += m[i] + m[n-1-i]
        
        if n % 2 == 0:
            return ans
        
        mid = n // 2
        return ans - mat[mid][mid]

golang 解法, 执行用时: 20 ms, 内存消耗: 5.5 MB, 提交时间: 2021-06-09 14:48:31

func diagonalSum(mat [][]int) int {
    ans := 0
    n := len(mat)
    for i, m := range mat {
        ans += m[i] + m[n-1-i]
    }
    if n % 2 == 0 {
        return ans
    }
    mid := n / 2
    return ans - mat[mid][mid]
}

上一题