【题目描述】
给你一个正方形矩阵 mat
,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和
输入:mat = [[1,2,3],
[4,5,6],
[7,8,9]]
输出:25
解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25
请注意,元素 mat[1][1] = 5 只会被计算一次。
解法一
解法二
- 思路
遍历整个矩阵,如果当前坐标 (i, j) 满足 i = j 或者 i + j = n - 1,就把当前的数字加入到答案中
- 复杂度分析
时间复杂度:O(n^2),其中 nn 是矩阵mat
的边长。
空间复杂度:O(1)
解法三
- 思路
逐行遍历,记当前的行号为 i,对于一行我们把 (i, i)(i,i) 位置和 (i, n - i - 1)加入答案。这样如果 n 是奇数的话,最中间的格子会被加入两次。所以 nn为奇数的时候,我们需要减掉矩阵最中心的那个值
- 复杂度分析
时间复杂度:O(n),其中 n 是矩阵 mat
的边长。
空间复杂度:O(1)
更多有关于Linux C++后台开发的学习分享,感兴趣的朋友们可以关注我的个人公众号