---
# System prepended metadata

title: 1572. Matrix Diagonal Sum
tags: [Leetcode, Python]

---

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