Skip to main content

Matrix Diagonal Sum

LeetCode 1677 | Difficulty: Easy​

Easy

Problem Description​

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`

Topics: Array, Matrix


Approach​

Matrix​

Treat the matrix as a 2D grid. Common techniques: directional arrays (dx, dy) for movement, BFS/DFS for connected regions, in-place marking for visited cells, boundary traversal for spiral patterns.

When to use

Grid traversal, island problems, path finding, rotating/transforming matrices.


Solutions​

Solution 1: C# (Best: 104 ms)​

MetricValue
Runtime104 ms
Memory27.7 MB
Date2020-09-23
Solution
public class Solution {
public int DiagonalSum(int[][] mat) {
int m = mat.GetLength(0);
int n = mat[0].GetLength(0);
List<int> nums = new List<int>();

for (int i = 0,j=0; i <m && j<n; i++,j++)
{
nums.Add(mat[i][j]);
}
for (int i = 0, j = n-1; i < m && j >= 0; i++, j--)
{
if(i!=j)
nums.Add(mat[i][j]);
}

return nums.Sum();
}
}

Complexity Analysis​

ApproachTimeSpace
Solution$O(n)$$O(1) to O(n)$

Interview Tips​

Key Points
  • Start by clarifying edge cases: empty input, single element, all duplicates.
  • LeetCode provides 1 hint(s) for this problem β€” try solving without them first.
πŸ’‘ Hints

Hint 1: There will be overlap of elements in the primary and secondary diagonals if and only if the length of the matrix is odd, which is at the center.