1572. 矩阵对角线元素的和

发布时间 2023-04-28 22:16:52作者: 猥琐丑八怪

 分析:

找了一个小规律

首先对角线上的数是从第一行到最后一行按顺序的

在每一行上下标逐渐加1,最后总次数是矩阵的长度

最重要的是,两个对角线是对称的

也就是当取前面的第一个数时,后面对角线就是-1;前面取第二个时,后面就是-2

然后有个细节,当行数为奇数时需要减去一个正中间的数,重复了

然后写代码

代码:

 1 class Solution(object):
 2     def diagonalSum(self, mat):
 3         """
 4         :type mat: List[List[int]]
 5         :rtype: int
 6         """
 7         n=len(mat)
 8         sums=0
 9         for i in range(n):
10             x=i+1
11             sums=sums+mat[i][i]+mat[i][-x]
12         a=n-1
13         b=a//2
14         c=b+1
15         if n%2!=0:
16             sums=sums-mat[c-1][c-1]
17             return sums
18         else:
19             return sums