class Solution {
public int diagonalSum(int[][] mat) {
int sum = 0;
for(int i = 0 ; i < mat.length ; i++){
for(int j = 0 ; j < mat[i].length ; j++){
if(i==j){
sum += mat[i][j];
break;
}
}
for(int j = mat[i].length-1 ; j >= 0 ; j--){
if(i+j==mat.length-1){
sum += mat[i][j];
break;
}
}
}
if(mat.length%2!=0){
sum-=mat[(mat.length-1)/2][(mat.length-1)/2];
}
return sum;
}
}
方法二:枚举对角线元素:
java复制代码
class Solution {
public int diagonalSum(int[][] mat) {
/*
如果记行号为i,则当前下处于对角线的元素为:(i,i)和(i,n-i-1)
并且当n为奇数,最中间交叉处的值会被加两次,所以得减掉一次。
*/
int n = mat.length , sum = 0;
for(int i = 0 ; i < n ; i ++){
sum+=mat[i][i] + mat[i][n-i-1];
}
if(n%2!=0) return sum-mat[n/2][n/2];//判断奇偶性还可以用n&1
return sum;
}
}