1 minute read

Given a square matrix mat, return the sum of the matrix diagonals.

Only include the sum of all the elements on the primary diagonal and all the elements on the secondary diagonal that are not part of the primary diagonal.

Example 1:

Input: mat = [[1,2,3], [4,5,6], [7,8,9]] Output: 25 Explanation: Diagonals sum: 1 + 5 + 9 + 3 + 7 = 25 Notice that element mat[1][1] = 5 is counted only once. Example 2:

Input: mat = [[1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1]] Output: 8 Example 3:

Input: mat = [[5]] Output: 5

Constraints:

n == mat.length == mat[i].length 1 <= n <= 100 1 <= mat[i][j] <= 100

/**
 * @param {number[][]} mat
 * @return {number}
 */
var diagonalSum = function (mat) {
  // Get the number of rows or columns in the square matrix 'mat'
  let n = mat.length;
  // Initialize a variable to store the sum of diagonal elements
  let sum = 0;
  // Loop through each row of the matrix
  for (let i = 0; i < n; i++) {
    // Add the element at the main diagonal to the sum
    sum += mat[i][i];
    // If the current row is not the same as its mirror row (for odd-sized matrices)
    if (i !== n - 1 - i) {
      // Add the element at the secondary diagonal to the sum
      sum += mat[i][n - 1 - i];
    }
  }
  // Return the sum of diagonal elements
  return sum;
};

The time complexity of this code is O(n), where n is the number of rows or columns in the matrix. This is because the code loops through each row of the matrix once, performing a constant number of operations for each row.

The space complexity of this code is O(1), as it only uses a constant amount of additional space to store the sum variable. The space used does not depend on the size of the matrix.

Leave a comment