給你一個正方形矩陣?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
class Solution {public int diagonalSum(int[][] mat) {int totalSum=0;int size=mat.length;for(int i=0;i<size;++i){int reverseIndex=size-i-1;totalSum +=mat[i][i];if (i!=reverseIndex){totalSum+=mat[i][reverseIndex];}}return totalSum;}
}
因為是方正所以size=mat.length;
主對角線:mat[i][i];
副對角線:mat[i][size-i-1];
如果是偶數列(行)則不會有重復,如果是奇數列,則但行標=列標時,中間元素會重復,不能加。