Matrix Diagonal Sum

easy array matrix

Problem

Given an n x n square matrix mat, return the sum of the matrix diagonals (primary and secondary; count center once if overlapping).

Inputmat = [[1,2,3],[4,5,6],[7,8,9]]
Output25
Primary 1+5+9=15, Secondary 3+5+7=15, overlap 5 → 25.

def diagonal_sum(mat):
    n = len(mat); total = 0
    for i in range(n):
        total += mat[i][i] + mat[i][n-1-i]
    if n & 1: total -= mat[n // 2][n // 2]
    return total
function diagonalSum(mat) {
  const n = mat.length; let total = 0;
  for (let i = 0; i < n; i++) total += mat[i][i] + mat[i][n-1-i];
  if (n & 1) total -= mat[n >> 1][n >> 1];
  return total;
}
class Solution {
    public int diagonalSum(int[][] mat) {
        int n = mat.length, total = 0;
        for (int i = 0; i < n; i++) total += mat[i][i] + mat[i][n-1-i];
        if ((n & 1) == 1) total -= mat[n/2][n/2];
        return total;
    }
}
int diagonalSum(vector>& mat) {
    int n = mat.size(), total = 0;
    for (int i = 0; i < n; i++) total += mat[i][i] + mat[i][n-1-i];
    if (n & 1) total -= mat[n/2][n/2];
    return total;
}
Time: O(n) Space: O(1)