LeetCode题解之矩阵对角线元素的和

矩阵对角线元素的和

题目描述

给你一个正方形矩阵 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

提示:

  • n == mat.length == mat[i].length
  • 1 <= n <= 100
  • 1 <= mat[i][j] <= 100

解题思路

假设矩阵的长度为 n,那么它的对角线的下标为(0,0),(1,1),...,(n-1,n-1),而它的副对角线的下标为(n-1,0),(n-2,1),...,(0,n-1),因此直接将这些值累加起来,然后去掉中间的点即可。

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组 mat 的长度。
  • 空间复杂度:O(1)。

代码实现

class Solution {
    public int diagonalSum(int[][] mat) {
        int res = 0;
        int len = mat.length;
        for (int i = 0, j = len - 1; i < len; i ++, j --) {
            res += mat[i][i];
            if (i != j) {
                res += mat[j][i];
            }
        }
        return res;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。