注意一个条件即可:
当矩阵 m a t mat mat的行列为奇数时,需要减去重复计算的最中间数;当矩阵 m a t mat mat的行列为偶数时,不需要计算。
此外,还有矩阵的一个小知识:
矩阵主对角线上的元素下标相同,矩阵副对角线上的元素之和为矩阵的行数或者列数。
代码如下:
class Solution {
public int diagonalSum(int[][] mat) {
int n = mat.length;
int num = 0;
for(int i=0;i<n;i++){
num+=mat[i][i];
num+=mat[i][n-i-1];
}
return n%2==0?num:num-mat[(n-1)/2][(n-1)/2];
}
}