矩阵对角线元素的和

解题思路:

  1. 逐行遍历,记当前的行号为 i,对于一行把 (i, i) 位置和 (i, n - i - 1) 加入答案;

  2. 这样如果 n 是奇数的话,最中间的格子会被加入两次,所以 n 为奇数的时候,需要减掉矩阵最中心的那个值;

  3. n & 1 判断奇偶数(奇数 2 进制最后一位为 1,偶数 2 进制最后一位为 0);

复杂度:

  1. 时间复杂度:O(n),其中 n 是矩阵 mat 的边长;

  2. 空间复杂度:O(1);

代码实现:

var diagonalSum = function (mat) {
  const n = mat.length, mid = Math.floor(n / 2);
      
  let sum = 0;
  for (let i = 0; i < n; ++i) {
    sum += mat[i][i] + mat[i][n - 1 - i];
  }

  return sum - mat[mid][mid] * (n & 1);
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 矩阵对角线元素的和
  2. 2. 解题思路:
  3. 3. 复杂度:
  4. 4. 代码实现: