eg.
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Output: 1 6 11 16 2 7 12 3 8 4
Approach:
- number of diagonals = arr.length
- all the diagonals are starting from i=0,
- till j=arr.length that will act as right wall
package jan24_2D_Array;
public class DiagonalTraversal {
public static void main(String[] args) {
int[][] arr = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
/*
Time Complexity:
Best Case: O(n^2) – All diagonals are visited once.
Average Case: O(n^2) – Diagonal traversal over matrix elements.
Worst Case: O(n^2) – Covers upper half of matrix diagonals.
Space Complexity:
Best/Average/Worst Case: O(1) – No extra space used, in-place processing.
*/
for (int diagonal = 0; diagonal < arr.length; diagonal++) {
for (int i = 0, j = diagonal; j < arr.length; i++, j++) {
System.out.print(arr[i][j] + "\t");
}
}
}
}
| Case | Time Complexity | Explanation | Space Complexity | Explanation |
|---|---|---|---|---|
| Best | O(n²) | All diagonals are visited once | O(1) | No extra space used |
| Average | O(n²) | Diagonal traversal over matrix | O(1) | In-place processing |
| Worst | O(n²) | Covers upper half of matrix | O(1) | No additional memory used |
