Given a square matrix, find out count of numbers that are same in same row and same in both primary and secondary diagonals.
Examples :
Input : 1 2 1 4 5 2 0 5 1 Output : 2 Primary diagonal is 1 5 1 Secondary diagonal is 1 5 0 Two elements (1 and 5) match in two diagonals and same. Input : 1 0 0 0 1 0 0 0 1 Output : 1 Primary diagonal is 1 1 1 Secondary diagonal is 0 1 0 Only one element is same.
We can achieve this in O(n) time, O(1) space and only one traversal. We can find current element in i-th row of primary diagonal as mat[i][i] and i-th element of secondary diagonal as mat[i][n-i-1].
Implementation:
C++
// CPP program to find common elements in // two diagonals. #include <iostream> #define MAX 100 using namespace std; // Returns count of row wise same // elements in two diagonals of // mat[n][n] int countCommon( int mat[][MAX], int n) { int res = 0; for ( int i=0;i<n;i++) if (mat[i][i] == mat[i][n-i-1]) res++; return res; } // Driver Code int main() { int mat[][MAX] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; cout << countCommon(mat, 3); return 0; } |
Java
// Java program to find common // elements in two diagonals. import java.io.*; class GFG { int MAX = 100 ; // Returns count of row wise same elements // in two diagonals of mat[n][n] static int countCommon( int mat[][], int n) { int res = 0 ; for ( int i = 0 ; i < n; i++) if (mat[i][i] == mat[i][n - i - 1 ]) res++; return res; } // Driver Code public static void main(String args[]) throws IOException { int mat[][] = {{ 1 , 2 , 3 }, { 4 , 5 , 6 }, { 7 , 8 , 9 }}; System.out.println(countCommon(mat, 3 )); } } // This code is contributed by Anshika Goyal. |
Python3
# Python3 program to find common # elements in two diagonals. Max = 100 # Returns count of row wise same # elements in two diagonals of # mat[n][n] def countCommon(mat, n): res = 0 for i in range (n): if mat[i][i] = = mat[i][n - i - 1 ] : res = res + 1 return res # Driver Code mat = [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]] print (countCommon(mat, 3 )) # This code is contributed by Anant Agarwal. |
C#
// C# program to find common // elements in two diagonals. using System; class GFG { // Returns count of row wise same // elements in two diagonals of // mat[n][n] static int countCommon( int [,]mat, int n) { int res = 0; for ( int i = 0; i < n; i++) if (mat[i,i] == mat[i,n - i - 1]) res++; return res; } // Driver Code public static void Main() { int [,]mat = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Console.WriteLine(countCommon(mat, 3)); } } // This code is contributed by vt_m. |
PHP
<?php // PHP program to find common // elements in two diagonals. $MAX = 100; // Returns count of row wise // same elements in two // diagonals of mat[n][n] function countCommon( $mat , $n ) { global $MAX ; $res = 0; for ( $i = 0; $i < $n ; $i ++) if ( $mat [ $i ][ $i ] == $mat [ $i ][ $n - $i - 1]) $res ++; return $res ; } // Driver Code $mat = array ( array (1, 2, 3), array (4, 5, 6), array (7, 8, 9)); echo countCommon( $mat , 3); // This code is contributed by aj_36 ?> |
Javascript
<script> // Javascript program to find common elements in // two diagonals. let MAX = 100; // Returns count of row wise same // elements in two diagonals of // mat[n][n] function countCommon(mat, n) { let res = 0; for (let i = 0; i < n; i++) if (mat[i][i] == mat[i][n - i - 1]) res++; return res; } // Driver Code let mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; document.write(countCommon(mat, 3)); // This code is contributed by subham348. </script> |
1
Time Complexity: O(n).
Auxiliary Space: O(1).
If you like neveropen and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the neveropen main page and help other Geeks.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!