?
解題 思路 1:
- 循環,找到主對角線的下標和副對角線的下標,如果矩陣長或寬為奇數的時候,需要減去中間公共的那一個值,中間公共的那個數的下標為mat[mat.size()/2][mat.size()/2]
- 副對角線的下標為?mat [i][mat.size()-i-1]
-
class Solution { public:int diagonalSum(vector<vector<int>>& mat) {int res = 0 ;for(int i = 0 ;i<mat.size();i++){//副對角線 列 = 行的大小 - 當前的行數 -1res +=mat[i][i] + mat [i][mat.size()-i-1];}if(mat.size()%2 ==1){//若行列為奇數,則應該減去公共的那部分res -= mat[mat.size()/2][mat.size()/2];}return res;} };
?對于二維數組,矩陣的副對角線上元素的下標
- 對于一個二維數組(矩陣),副對角線上的元素可以通過以下方式計算出它們的下標:
????????假設矩陣的大小為 n * n,下標從 0 開始計數。
????????副對角線上的元素滿足兩個條件:
????????????????行下標和列下標之和等于 n-1
????????????????行下標不等于列下標
int n = mat.size(); // 矩陣的行數或列數
for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (i + j == n - 1 && i != j) {// 當前元素是副對角線上的一個元素// 下標為 (i, j)}}
}