每日一题——LeetCode1572.矩阵对角线元素的和

方法一 遍历矩阵

如果矩阵中某个位置(x,y)处于对角线上,那么这个位置必定满足:

x=y 或 x+y = len-1 (len为矩阵长度)

javascript 复制代码
var diagonalSum = function(mat) {
    let len = mat.length;
    let sum = 0;
    for (let i = 0; i < len; i++) {
        for (let j = 0; j < len; j++) {
            if (i == j || i + j == len - 1) {
                sum += mat[i][j];
            }
        }
    }
    return sum;
};

消耗时间和内存情况:

方法二 枚举对角线元素:

逐行遍历,记当前行号为i,每一行的对角线元素为(i,i)和(i,len-i-1)

如果len为奇数则对角线交点会被计算两次,需要减掉一次

用len&1,如果len为奇数结果为1,len为偶数结果为0

javascript 复制代码
var diagonalSum = function(mat) {
    let len = mat.length, mid = Math.floor(len / 2);
    let sum = 0;
    for (let i = 0; i < len; ++i) {
        sum += mat[i][i] + mat[i][len - 1 - i];
    }
    return sum - mat[mid][mid] * (len & 1);
};

消耗时间和内存情况:

相关推荐
2301_8213696125 分钟前
嵌入式实时C++编程
开发语言·c++·算法
2601_9496130225 分钟前
flutter_for_openharmony家庭药箱管理app实战+用药知识详情实现
android·javascript·flutter
sjjhd65226 分钟前
多核并行计算优化
开发语言·c++·算法
一起养小猫35 分钟前
Flutter for OpenHarmony 实战 表单处理与验证完整指南
android·开发语言·前端·javascript·flutter·harmonyos
weixin_3954489141 分钟前
main.c_cursor_0130
前端·网络·算法
半壶清水1 小时前
[软考网规考点笔记]-操作系统核心知识及历年真题解析
网络·网络协议·算法
Tansmjs2 小时前
实时数据可视化库
开发语言·c++·算法
WBluuue2 小时前
Codeforces 1075 Div2(ABC1C2D1D2)
c++·算法
圣保罗的大教堂2 小时前
leetcode 3650. 边反转的最小路径总成本 中等
leetcode
2401_838472512 小时前
C++模拟器开发实践
开发语言·c++·算法