# 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
```