Open In App

Row-wise common elements in two diagonals of a square matrix

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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).

 



Last Updated : 19 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads