Tutorialspoint.dev

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

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

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
?>


Output :

  1  

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter