企业网站开发意义,建站开发软件,个体户做网站有优势吗,网络营销的六大功能【LetMeFly】1572.矩阵对角线元素的和
力扣题目链接#xff1a;https://leetcode.cn/problems/matrix-diagonal-sum/
给你一个正方形矩阵 mat#xff0c;请你返回矩阵对角线元素的和。
请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1https://leetcode.cn/problems/matrix-diagonal-sum/
给你一个正方形矩阵 mat请你返回矩阵对角线元素的和。
请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1 输入mat [[1,2,3],[4,5,6],[7,8,9]]
输出25
解释对角线的和为1 5 9 3 7 25
请注意元素 mat[1][1] 5 只会被计算一次。示例 2
输入mat [[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]]
输出8示例 3
输入mat [[5]]
输出5提示
n mat.length mat[i].length1 n 1001 mat[i][j] 100
方法一模拟
假设 m a t mat mat的大小是 n × n n\times n n×n则可以
用 i i i从 0 0 0到 n − 1 n - 1 n−1遍历 m a t mat mat的每一行 a n s ans ans加上这一行的 i i i和 n − i − 1 n - i - 1 n−i−1。
最后如果 n n n是奇数则还需要减去对主副对角线重叠的元素 m a t [ ⌊ n 2 ⌋ ] [ ⌊ n 2 ⌋ ] mat[\lfloor\frac{n}{2}\rfloor][\lfloor\frac{n}{2}\rfloor] mat[⌊2n⌋][⌊2n⌋]
时间复杂度 O ( n ) O(n) O(n)其中 s i z e ( m a t ) n × n size(mat) n\times n size(mat)n×n空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C
class Solution {
public:int diagonalSum(vectorvectorint mat) {int n mat.size();int ans 0;for (int i 0; i n; i) {ans mat[i][i] mat[i][n - i - 1];}if (n % 2) {ans - mat[n / 2][n / 2];}return ans;}
};Python
# from typing import Listclass Solution:def diagonalSum(self, mat: List[List[int]]) - int:n len(mat)ans 0for i in range(n):ans mat[i][i] mat[i][n - i - 1]if n % 2:ans - mat[n // 2][n // 2]return ans同步发文于CSDN原创不易转载请附上原文链接哦~ Tisfyhttps://letmefly.blog.csdn.net/article/details/132223172