1572. 矩阵对角线元素的和 - 力扣(LeetCode)



想要计算一个正方形矩阵中两个对角线的元素之和:
-
主对角线:从左上角到右下角的对角线。
-
副对角线:从右上角到左下角的对角线,但不包括主对角线的交点。
我们可以通过遍历矩阵的每一行来提取这些对角线元素的值。让我们具体实现:
解题思路:
-
主对角线的元素是
mat[i][i],其中i是行和列的索引。 -
副对角线的元素是
mat[i][n-i-1],其中n是矩阵的大小,i是行索引。
步骤:
-
初始化两个变量,分别用来保存主对角线和副对角线的元素和。
-
遍历矩阵中的每一行,分别加上主对角线和副对角线的元素。如果是主对角线和副对角线的交点元素(即中间的元素,对于奇数大小的矩阵),需要去除一次。
Python 代码实现:
def diagonalSum(mat):
n = len(mat)
total = 0
for i in range(n):
total += mat[i][i] # 主对角线元素
total += mat[i][n-i-1] # 副对角线元素
# 如果矩阵的大小是奇数,去掉重复计算的中心元素
if n % 2 == 1:
total -= mat[n//2][n//2]
return total
解释:
-
mat[i][i]是主对角线的元素,mat[i][n-i-1]是副对角线的元素。 -
如果矩阵的大小
n是奇数,中心的元素mat[n//2][n//2]会被同时算作主对角线和副对角线元素,因此要减去一次。
这样就能得到矩阵对角线元素的和了。
你可以调用这个函数来计算任意正方形矩阵的对角线元素之和。
489

被折叠的 条评论
为什么被折叠?



