Leetcode-1572. 矩阵对角线元素的和

题目:

给你一个正方形矩阵 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

方法一:直接嵌套循环无脑输出:

class Solution {
    public int diagonalSum(int[][] mat) {
        int sum = 0;
        for(int i = 0 ;  i < mat.length ; i++){
            for(int j = 0 ; j < mat[i].length ; j++){
                if(i==j){
                sum += mat[i][j];
                break;
                }
            }
            for(int j = mat[i].length-1 ; j >= 0 ; j--){
                if(i+j==mat.length-1){
                    sum += mat[i][j];
                    break;
                }
            }
        }
        if(mat.length%2!=0){
        sum-=mat[(mat.length-1)/2][(mat.length-1)/2];
        }
        return sum;
    }
}

 方法二:枚举对角线元素:

class Solution {
    public int diagonalSum(int[][] mat) {
        /*
        如果记行号为i,则当前下处于对角线的元素为:(i,i)和(i,n-i-1)
        并且当n为奇数,最中间交叉处的值会被加两次,所以得减掉一次。
         */
         int  n = mat.length , sum = 0;
         for(int i = 0 ; i < n ; i ++){
             sum+=mat[i][i] + mat[i][n-i-1];
         }
         if(n%2!=0) return sum-mat[n/2][n/2];//判断奇偶性还可以用n&1
         return sum;
    }
}

PS: n&1为什么能够判断奇偶,是因为在二进制中,奇数的最低位一定是1,偶数的最低位一定是0。所以无论其他位是什么,取决奇偶性的在于最低位。1&1=1,故为奇数;0&1=0,故为偶数。 

 

相关推荐

  1. (50)矩阵对角线元素

    2024-02-16 09:40:04       27 阅读
  2. 求一个3*3整型矩阵对角线元素之和

    2024-02-16 09:40:04       13 阅读
  3. leetcode1329--将矩阵对角线排序

    2024-02-16 09:40:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-16 09:40:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-16 09:40:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-16 09:40:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-16 09:40:04       20 阅读

热门阅读

  1. Transformer?

    2024-02-16 09:40:04       26 阅读
  2. 程序员为什么不喜欢关电脑?

    2024-02-16 09:40:04       31 阅读
  3. c# linq 查询

    2024-02-16 09:40:04       25 阅读
  4. Spark中多分区写文件前可以不排序么

    2024-02-16 09:40:04       34 阅读
  5. Vue插槽

    Vue插槽

    2024-02-16 09:40:04      23 阅读
  6. JVM学习

    JVM学习

    2024-02-16 09:40:04      27 阅读
  7. 学习总结16

    2024-02-16 09:40:04       27 阅读
  8. AutoSAR(基础入门篇)9.5-实验:配置通信

    2024-02-16 09:40:04       26 阅读