Open In App

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

Last Updated : 19 Jul, 2022
Comments
Improve
Suggest changes
Like Article
Like
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).

 


Next Article

Similar Reads