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> |
Output
1
Time Complexity: O(n).
Auxiliary Space: O(1).
Recommended Articles