Open In App

Count frequency of k in a matrix of size n where matrix(i, j) = i+j

Given a matrix of size n*n. Count the frequency of given element k in that matrix. Here base index is 1.

Examples: 

Input : n = 4, k = 7
Output : 2
Explanation
The matrix will be
2 3 4 5 
3 4 5 6 
4 5 6 7 
5 6 7 8
in the given matrix where M(i, j) = i+j, 
frequency of 7 is 2

Input : n = 5, k = 4
Output : 3
Explanation
The matrix will be
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
5 6 7 8 9 
6 7 8 9 10 
Explanation
In the given matrix where M(i, j) = i+j,
frequency of 4 is 3

First method 

  1. Construct a matrix of size n*n. 
  2. Fill the value with M(i, j)=i+j.(recall that here base index is 1) 
  3. Iteratively traverse the matrix and count the frequency of a given element. 

This method is not that much efficient because if the matrix size is very large it’s will result in a Time limit exceeded. Time complexity will be O(n^2).

Efficient method 

In this method, we avoid creating a matrix of size n*n. 
for example 
if n = 10 the matrix will be

2  3  4  5  6  7  8  9  10 11 
3  4  5  6  7  8  9  10 11 12 
4  5  6  7  8  9  10 11 12 13 
5  6  7  8  9  10 11 12 13 14 
6  7  8  9  10 11 12 13 14 15 
7  8  9  10 11 12 13 14 15 16 
8  9  10 11 12 13 14 15 16 17 
9  10 11 12 13 14 15 16 17 18 
10 11 12 13 14 15 16 17 18 19 
11 12 13 14 15 16 17 18 19 20  

Now, notice how the values are the same in the secondary Diagonal, and we can also find a pattern in the count it increases like 1, 2, 3, 4, 
Here we can see that 
If (n+1)>=k then the frequency of k is k-1 
Else frequency will be 2*n+1-k

Implementation:




// CPP program to find the frequency of k
// in matrix where m(i, j)=i+j
#include <bits/stdc++.h>
using namespace std;
int find(int n, int k)
{
    if (n + 1 >= k)
        return (k - 1);
    else
        return (2 * n + 1 - k);
}
 
// Driver Code
int main()
{
    int n = 4, k = 7;
    int freq = find(n, k);
    if (freq < 0)
        cout << " element not exist \n ";
    else
        cout << " Frequency of " << k
             << " is " << freq << "\n";
    return 0;
}




// Java program to find the
// frequency of k in matrix
// in matrix where m(i, j)=i+j
import java.util.*;
import java.lang.*;
 
public class GfG{
 
    public static int find(int n, int k)
    {
        if (n + 1 >= k)
            return (k - 1);
        else
            return (2 * n + 1 - k);
    }
         
    // Driver function
    public static void main(String argc[])
    {
        int n = 4, k = 7;
        int freq = find(n, k);
        if (freq < 0)
            System.out.print(" element"
            + " not exist \n ");
        else
            System.out.print(" Frequency"
            + " of " + k + " is " +
            freq + "\n");
    }
}
 
// This code is contributed by Sagar Shukla




# Python program to find
# the frequency of k
# in matrix where
# m(i, j)=i+j
 
import math
 
def find( n,  k):
 
    if (n + 1 >= k):
        return (k - 1)
    else:
        return (2 * n + 1 - k)
 
  
# Driver Code
n = 4
k = 7
 
freq = find(n, k)
 
if (freq < 0):
    print ( " element not exist")
else:
    print(" Frequency of " , k ," is " , freq )
 
# This code is contributed
# by Gitanjali.




// C# program to find the
// frequency of k in matrix
// in matrix where m(i, j)=i+j
using System;
 
public class GfG{
 
    public static int find(int n, int k)
    {
        if (n + 1 >= k)
            return (k - 1);
        else
            return (2 * n + 1 - k);
    }
         
    // Driver function
    public static void Main()
    {
        int n = 4, k = 7;
        int freq = find(n, k);
        if (freq < 0)
            Console.WriteLine(" element"
            + " not exist ");
        else
            Console.WriteLine(" Frequency"
            + " of " + k + " is " +
            freq );
    }
}
 
// This code is contributed by vt_m




<?php
// PHP program to find the frequency of k
// in matrix where m(i, j)=i+j
 
function find($n, $k)
{
    if ($n + 1 >= $k)
        return ($k - 1);
    else
        return (2 * $n + 1 - $k);
}
 
    // Driver Code
    $n = 4;
    $k = 7;
    $freq = find($n, $k);
    if ($freq < 0)
        echo " element not exist \n ";
    else
        echo " Frequency of " , $k
            , " is " , $freq , "\n";
             
// This code is contributed by anuj_67.
?>




<script>
 
// Javascript program to find the frequency of k
// in matrix where m(i, j)=i+j
 
function find(n, k)
{
    if (n + 1 >= k)
        return (k - 1);
    else
        return (2 * n + 1 - k);
}
 
// Driver Code
 
var n = 4, k = 7;
var freq = find(n, k);
if (freq < 0)
    document.write( " element not exist <br>");
else
    document.write( " Frequency of " + k
         + " is " + freq + "<br>");
 
 
</script>

Output
 Frequency of 7 is 2

Time Complexity: O(1)
Auxiliary Space: O(1)


Article Tags :