矩阵对角线元素的和
解题思路:
-
逐行遍历,记当前的行号为 i,对于一行把 (i, i) 位置和 (i, n - i - 1) 加入答案;
-
这样如果 n 是奇数的话,最中间的格子会被加入两次,所以 n 为奇数的时候,需要减掉矩阵最中心的那个值;
-
n & 1 判断奇偶数(奇数 2 进制最后一位为 1,偶数 2 进制最后一位为 0);
复杂度:
-
时间复杂度:O(n),其中 n 是矩阵 mat 的边长;
-
空间复杂度: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);
};
326.3 的幂
上一篇