Matrix Diagonal Sum
LeetCode 1677 | Difficulty: Easyβ
EasyProblem 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)β
| Metric | Value |
|---|---|
| Runtime | 104 ms |
| Memory | 27.7 MB |
| Date | 2020-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β
| Approach | Time | Space |
|---|---|---|
| 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.