# 1572. Matrix Diagonal Sum https://leetcode.com/problems/matrix-diagonal-sum/description/ ###### tags: `Python`,`Leetcode` ## Code ``` python = class Solution: def diagonalSum(self, mat: List[List[int]]) -> int: n = len(mat) sum = 0 mid = n // 2 for i in range (n): sum += mat[i][i] sum += mat[n-1-i][i] if n % 2 == 1 : sum -= mat[mid][mid] return sum ``` ## 題意 * 題目會給一個正方形矩陣 `mat` ,輸出須為兩個對角線(左上-右下、右上-左下)的總和 * 如果兩的對角線在中間有重合,只要加一次 ## 思路 * 可能可以... 1. 跑兩個 for 迴圈,把兩個對角線總合分別求出來,再把兩個對角線加在一起,若中間重合就扣掉 2. 跑一個 for 迴圈,一次求出兩對角線合,中間重合就扣掉 * 我選 2 , 跑一次迴圈就好 ## 解法 ``` python = class Solution: def diagonalSum(self, mat: List[List[int]]) -> int: n = len(mat) # 得出矩陣列數 sum = 0 # 用來計算總和用 mid = n // 2 # 用來找中間用 for i in range (n): sum += mat[i][i] # 左上-右下總和 sum += mat[n-1-i][i] # 右上-左下總和 if n % 2 == 1 : # 如果矩陣長 or 寬 是奇數,中間才會有重合的地方要扣掉 sum -= mat[mid][mid] return sum ```