Check whether K times of a element is present in array
Given an array arr[] and an integer K, the task is to check whether K times of any element are also present in the array.
Examples :
Input: arr[] = {10, 14, 8, 13, 5}, K = 2
Output: Yes
Explanation:
K times of 5 is also present in an array, i.e. 10.
Input: arr[] = {7, 8, 5, 9, 11}, K = 3
Output: No
Explanation:
K times of any element is not present in the array
Naive Approach: A simple solution is to run two nested loops and check for every element that K times of that element is also present in the array.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void checkKTimesElement( int arr[], int n, int k)
{
bool found = false ;
for ( int i = 0; i < n; i++) {
for ( int j = 0; j < n; j++) {
if (arr[j] == k * arr[i]) {
found = true ;
break ;
}
}
}
if (found)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
int main()
{
int arr[] = { 10, 14, 8, 13, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
int k = 2;
checkKTimesElement(arr, n, k);
return 0;
}
|
Java
class GFG{
static void checkKTimesElement( int arr[],
int n,
int k)
{
boolean found = false ;
for ( int i = 0 ; i < n; i++)
{
for ( int j = 0 ; j < n; j++)
{
if (arr[j] == k * arr[i])
{
found = true ;
break ;
}
}
}
if (found)
System.out.print( "Yes" + "\n" );
else
System.out.print( "No" + "\n" );
}
public static void main(String[] args)
{
int arr[] = { 10 , 14 , 8 , 13 , 5 };
int n = arr.length;
int k = 2 ;
checkKTimesElement(arr, n, k);
}
}
|
Python3
def checkKTimesElement(arr, n, k):
found = False
for i in range ( 0 , n):
for j in range ( 0 , n):
if arr[j] = = k * arr[i]:
found = True
break
if found:
print ( 'Yes' )
else :
print ( 'No' )
if __name__ = = '__main__' :
arr = [ 10 , 14 , 8 , 13 , 5 ]
n = len (arr)
k = 2
checkKTimesElement(arr, n, k)
|
C#
using System;
class GFG{
static void checkKTimesElement( int []arr,
int n,
int k)
{
bool found = false ;
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j < n; j++)
{
if (arr[j] == k * arr[i])
{
found = true ;
break ;
}
}
}
if (found)
Console.Write( "Yes" + "\n" );
else
Console.Write( "No" + "\n" );
}
public static void Main(String[] args)
{
int []arr = { 10, 14, 8, 13, 5 };
int n = arr.Length;
int k = 2;
checkKTimesElement(arr, n, k);
}
}
|
Javascript
<script>
function checkKTimesElement(arr, n, k)
{
var found = false ;
for ( var i = 0; i < n; i++) {
for ( var j = 0; j < n; j++) {
if (arr[j] == k * arr[i]) {
found = true ;
break ;
}
}
}
if (found)
document.write( "Yes" );
else
document.write( "No" );
}
var arr = [ 10, 14, 8, 13, 5 ];
var n = arr.length;
var k = 2;
checkKTimesElement(arr, n, k);
</script>
|
Efficient Approach: The idea is to store all elements in hash-map and for each element check that K times of that element is present in the hash-map. If it exists in the hash-map, then return True otherwise False.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool checkKTimesElement( int arr[], int n, int k)
{
unordered_set< int > s;
for ( int i = 0; i < n; i++){
s.insert(arr[i]);
}
for ( int i = 0; i < n; i++) {
if (s.find(arr[i] * k) != s.end())
return true ;
}
return false ;
}
int main()
{
int arr[] = { 5, 14, 8, 13, 10 };
int n = sizeof (arr) / sizeof (arr[0]);
int k = 2;
if (checkKTimesElement(arr, n, k))
cout << "Yes\n" ;
else
cout << "No\n" ;
return 0;
}
|
Java
import java.util.*;
class GFG{
static boolean checkKTimesElement( int arr[], int n,
int k)
{
HashSet<Integer> s = new HashSet<Integer>();
for ( int i = 0 ; i < n; i++)
{
s.add(arr[i]);
}
for ( int i = 0 ; i < n; i++)
{
if (s.contains(arr[i] * k))
return true ;
}
return false ;
}
public static void main(String[] args)
{
int arr[] = { 5 , 14 , 8 , 13 , 10 };
int n = arr.length;
int k = 2 ;
if (checkKTimesElement(arr, n, k))
System.out.print( "Yes\n" );
else
System.out.print( "No\n" );
}
}
|
Python3
def checkKTimesElement(arr, n, k):
s = set ([])
for i in range (n):
s.add(arr[i])
for i in range (n):
if ((arr[i] * k) in s):
return True
return False
if __name__ = = "__main__" :
arr = [ 5 , 14 , 8 , 13 , 10 ]
n = len (arr)
k = 2
if (checkKTimesElement(arr, n, k)):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
using System.Collections.Generic;
class GFG{
static bool checkKTimesElement( int [] arr, int n,
int k)
{
HashSet< int > s = new HashSet< int >();
for ( int i = 0; i < n; i++)
{
s.Add(arr[i]);
}
for ( int i = 0; i < n; i++)
{
if (s.Contains(arr[i] * k))
return true ;
}
return false ;
}
static public void Main ()
{
int [] arr = { 5, 14, 8, 13, 10 };
int n = arr.Length;
int k = 2;
if (checkKTimesElement(arr, n, k))
Console.Write( "Yes\n" );
else
Console.Write( "No\n" );
}
}
|
Javascript
<script>
function checkKTimesElement(arr, n, k)
{
s = new Set();
for ( var i = 0; i < n; i++){
s.add(arr[i]);
}
for ( var i = 0; i < n; i++) {
if (s.has(arr[i] * k))
return true ;
}
return false ;
}
var arr = [5, 14, 8, 13, 10];
var n = arr.length;
var k = 2;
if (checkKTimesElement(arr, n, k))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Time Complexity: O(n)
Last Updated :
24 May, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...