Leetcode problem 115 - Matrix Diagonal Sum
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