1572. 矩阵对角线元素的和
- 题号:力扣1572
- 知识点:矩阵
- 目标完成度:9/150
- 总结
题干:
思路:
- 1.主对角线求和比较简单,索引是
[0][0], [1][1], ... , [len(mat)-1][len(mat)-1]
- 2.副对角线求和采用从上到下的顺序累加,由
j
充当第一维的计数器,从左到右的移动由right
控制 - 3.当
n
为奇数时,矩阵中间的元素即在主对角线也在副对角线上,因此在1 2 中被重复累加了,再减去一份即可。
class Solution:
def diagonalSum(self, mat: List[List[int]]) -> int:
right = len(mat)-1
ret = 0
# 主对角线求和
for i in range(len(mat)):
ret += mat[i][i]
# 副对角线求和
for j in range(len(mat)):
ret += mat[j][right]
right -= 1
# n为奇数时,减去多加了一次的中心元素
if len(mat) % 2:
mid = len(mat) // 2
ret -= mat[mid][mid]
return ret