(50)矩阵对角线元素的和


每日一言

高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。


题目

题目链接:矩阵对角线元素的和

给你一个正方形矩阵 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].length
1 <= n <= 100
1 <= mat[i][j] <= 100


解题思路

法一:

  1. 创建一个sum变量
  2. 遍历整个二维数组,判断当前数是否在对角线上,若在则sum加上当前数
  3. 返回sum

法二:

  1. 创建一个sum变量
  2. 遍历每一行,sum加上当前行在对角线上的值
  3. 返回sum

若行数为奇数,则需要减去数组最中心的数

代码

法一:

int diagonalSum(int** mat, int matSize, int* matColSize){
   
    int sum = 0;
    int i,j;
    for(i=0;i<matSize;i++)
    {
   
        for(j=0;j<matSize;j++)
        {
   
            if(i == j || i+j == matSize-1)
                sum+=mat[i][j];
        }
    }
    return sum;
}

法二:

int diagonalSum(int** mat, int matSize, int* matColSize){
   
    int i  = 0;
    int ret = 0;
    for(i=0;i<matSize;i++)
    {
   
        ret+=mat[i][i];
        ret+=mat[i][matSize-i-1];
    }

    if(matSize%2==1)
    {
   
        ret -= mat[matSize/2][matSize/2];
    }
    return ret;
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


相关推荐

  1. 50矩阵对角线元素

    2024-02-10 07:06:01       48 阅读
  2. 求一个3*3整型矩阵对角线元素之和

    2024-02-10 07:06:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-10 07:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-10 07:06:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-10 07:06:01       82 阅读
  4. Python语言-面向对象

    2024-02-10 07:06:01       91 阅读

热门阅读

  1. Spring 如何配置 bean (XML 方式)

    2024-02-10 07:06:01       49 阅读
  2. http&rpc different

    2024-02-10 07:06:01       49 阅读
  3. 使用深度学习对网络摄像头图像进行分类

    2024-02-10 07:06:01       54 阅读
  4. 5 scala的函数式编程简介

    2024-02-10 07:06:01       48 阅读