Given a square matrix mat[][] of size n * n. The task is to print all the elements which lie on the super-diagonal of the given matrix.
Examples:
Input: mat[][] = {
{1, 2, 3},
{3, 3, 4, },
{2, 4, 6}}
Output: 2 4
Input: mat[][] = {
{1, 2, 3, 4},
{3, 3, 4, 4},
{2, 4, 6, 3},
{1, 1, 1, 3}}
Output: 2 4 3
Approach: The super-diagonal of a square matrix is the set of elements that lies directly above the elements comprising the main diagonal. As for main diagonal elements, their indexes are like (i = j), for super-diagonal elements their indexes are as j = i + 1 (i denotes row and j denotes column).
Hence elements arr[0][1], arr[1][2], arr[2][3], arr[3][4], …. are the elements of super-diagonal.
Either traverse all elements of matrix and print only those where j = i + 1 which requires O(n2) time complexity or traverse only column from 1 to columnCount – 1 and print elements as arr[column – 1][column].
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; #define R 4 #define C 4 // Function to print the super diagonal // elements of the given matrix void printSuperDiagonal( int arr[R][C]) { for ( int i = 1; i < C; i++) { cout << arr[i - 1][i] << " " ; } } // Driver code int main() { int arr[R][C] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } }; printSuperDiagonal(arr); return 0; } |
Java
// Java implementation of the approach import java.io.*; class GFG { static int R = 4 ; static int C = 4 ; // Function to print the sub diagonal // elements of the given matrix static void printSubDiagonal( int arr[][]) { for ( int i = 1 ; i < C; i++) { System.out.print(arr[i- 1 ][i] + " " ); } } // Driver code public static void main (String[] args) { int arr[][] = { { 1 , 2 , 3 , 4 }, { 5 , 6 , 7 , 8 }, { 9 , 10 , 11 , 12 }, { 13 , 14 , 15 , 16 } }; printSubDiagonal(arr); } } // This code is contributed by mohit kumar 29 |
Python3
# Python3 implementation of the approach R = 4 C = 4 # Function to print the super diagonal # elements of the given matrix def printSuperDiagonal(arr) : for i in range ( 1 , C) : print (arr[i - 1 ][i],end = " " ); # Driver code if __name__ = = "__main__" : arr = [ [ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ], [ 9 , 10 , 11 , 12 ], [ 13 , 14 , 15 , 16 ]] printSuperDiagonal(arr); # This code is contributed by AnkitRai01 |
C#
// C# implementation of the approach using System; lass GFG { static int R = 4; static int C = 4; // Function to print the sub diagonal // elements of the given matrix static void printSubDiagonal( int [,]arr) { for ( int i = 1; i < C; i++) { Console.Write(arr[i-1,i] + " " ); } } // Driver code public static void Main (String[] args) { int [,]arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } }; printSubDiagonal(arr); } } /* This code is contributed by PrinciRaj1992 */ |
Javascript
<script> // Javascript implementation of the approach var R = 4 var C = 4 // Function to print the super diagonal // elements of the given matrix function printSuperDiagonal( arr) { for ( var i = 1; i < C; i++) { document.write( arr[i - 1][i] + " " ); } } // Driver code var arr = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ], [ 13, 14, 15, 16 ] ]; printSuperDiagonal(arr); </script> |
2 7 12
Time complexity: O(C) where C is no of columns of given matrix
Auxiliary space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!