Given an array of n distinct elements, the task is to find all elements in array which have at-least two greater elements than themselves.
Examples :
Input : arr[] = {2, 8, 7, 1, 5};
Output : 2 1 5
Explanation:
The output three elements have two or more greater elementsExplanation:
Input : arr[] = {7, -2, 3, 4, 9, -1};
Output : -2 3 4 -1
Method 1 (Simple): The naive approach is to run two loops and check one by one element of array check that array elements have at-least two elements greater than itself or not. If it’s true then print array element.
Implementation:
// Simple C++ program to find // all elements in array which // have at-least two greater // elements itself. #include<bits/stdc++.h> using namespace std;
void findElements( int arr[], int n)
{ // Pick elements one by one and
// count greater elements. If
// count is more than 2, print
// that element.
for ( int i = 0; i < n; i++)
{
int count = 0;
for ( int j = 0; j < n; j++)
if (arr[j] > arr[i])
count++;
if (count >= 2)
cout << arr[i] << " " ;
}
} // Driver code int main()
{ int arr[] = { 2, -6 ,3 , 5, 1};
int n = sizeof (arr) / sizeof (arr[0]);
findElements(arr, n);
return 0;
} |
// Java program to find all // elements in array which // have at-least two greater // elements itself. import java.util.*;
import java.io.*;
class GFG
{ static void findElements( int arr[],
int n)
{ // Pick elements one by one
// and count greater elements.
// If count is more than 2,
// print that element.
for ( int i = 0 ; i < n; i++)
{
int count = 0 ;
for ( int j = 0 ; j < n; j++)
if (arr[j] > arr[i])
count++;
if (count >= 2 )
System.out.print(arr[i] + " " );
}
} // Driver code public static void main(String args[])
{ int arr[] = { 2 , - 6 , 3 , 5 , 1 };
int n = arr.length;
findElements(arr, n);
} } // This code is contributed by Sahil_Bansall |
# Python3 program to find # all elements in array # which have at-least two # greater elements itself. def findElements( arr, n):
# Pick elements one by
# one and count greater
# elements. If count
# is more than 2, print
# that element.
for i in range (n):
count = 0
for j in range ( 0 , n):
if arr[j] > arr[i]:
count = count + 1
if count > = 2 :
print (arr[i], end = " " )
# Driver code arr = [ 2 , - 6 , 3 , 5 , 1 ]
n = len (arr)
findElements(arr, n) # This code is contributed by sunnysingh |
// C# program to find all elements in // array which have at least two greater // elements itself. using System;
class GFG
{ static void findElements( int []arr, int n)
{ // Pick elements one by one and count
// greater elements. If count is more
// than 2, print that element.
for ( int i = 0; i < n; i++)
{
int count = 0;
for ( int j = 0; j < n; j++)
if (arr[j] > arr[i])
count++;
if (count >= 2)
Console.Write(arr[i] + " " );
}
} // Driver code public static void Main(String []args)
{ int []arr = {2, -6 ,3 , 5, 1};
int n = arr.Length;
findElements(arr, n);
} } // This code is contributed by Parashar. |
<?php // Simple PHP program to find // all elements in array which // have at-least two greater // elements itself. function findElements( $arr , $n )
{ // Pick elements one by one and
// count greater elements. If
// count is more than 2,
// print that element.
for ( $i = 0; $i < $n ; $i ++)
{
$count = 0;
for ( $j = 0; $j < $n ; $j ++)
if ( $arr [ $j ] > $arr [ $i ])
$count ++;
if ( $count >= 2)
echo $arr [ $i ]. " " ;
}
} // Driver code $arr = array ( 2, -6 ,3 , 5, 1);
$n = sizeof( $arr );
findElements( $arr , $n );
?> |
<script> // Simple Javascript program to find // all elements in array which // have at-least two greater // elements itself. function findElements(arr, n)
{ // Pick elements one by one and
// count greater elements. If
// count is more than 2, print
// that element.
for (let i = 0; i < n; i++)
{
let count = 0;
for (let j = 0; j < n; j++)
if (arr[j] > arr[i])
count++;
if (count >= 2)
document.write(arr[i] + " " );
}
} // Driver code let arr = [2, -6 ,3 , 5, 1];
let n = arr.length;
findElements(arr, n);
// This is code is contributed by Mayank Tyagi </script> |
2 -6 1
Time Complexity: O(n2)
Auxiliary Space: O(1).
Method 2 (Use Sorting): We sort the array first in increasing order, then we print first n-2 elements where n is size of array.
Implementation:
// Sorting based C++ program to // find all elements in array // which have atleast two greater // elements itself. #include<bits/stdc++.h> using namespace std;
void findElements( int arr[], int n)
{ sort(arr, arr + n);
for ( int i = 0; i < n - 2; i++)
cout << arr[i] << " " ;
} // Driver Code int main()
{ int arr[] = { 2, -6 ,3 , 5, 1};
int n = sizeof (arr) / sizeof (arr[0]);
findElements(arr, n);
return 0;
} |
// Sorting based Java program to find // all elements in array which have // atleast two greater elements itself. import java.util.*;
import java.io.*;
class GFG
{ static void findElements( int arr[], int n)
{ Arrays.sort(arr);
for ( int i = 0 ; i < n - 2 ; i++)
System.out.print(arr[i] + " " );
} // Driver code public static void main(String args[])
{ int arr[] = { 2 , - 6 , 3 , 5 , 1 };
int n = arr.length;
findElements(arr, n);
} } // This code is contributed by Sahil_Bansall |
# Sorting based Python 3 program # to find all elements in array # which have atleast two greater # elements itself. def findElements(arr, n):
arr.sort()
for i in range ( 0 , n - 2 ):
print (arr[i], end = " " )
# Driven source arr = [ 2 , - 6 , 3 , 5 , 1 ]
n = len (arr)
findElements(arr, n) # This code is contributed # by Smitha Dinesh Semwal |
// Sorting based C# program to find // all elements in array which have // atleast two greater elements itself. using System;
class GFG
{ static void findElements( int []arr, int n)
{ Array.Sort(arr);
for ( int i = 0; i < n-2; i++)
Console.Write(arr[i] + " " );
} // Driver code public static void Main(String []args)
{ int []arr = { 2, -6 ,3 , 5, 1};
int n = arr.Length;
findElements(arr, n);
} } // This code is contributed by parashar |
<?php // Sorting based PHP program to // find all elements in array // which have atleast two greater // elements itself. function findElements( $arr , $n )
{ sort( $arr );
for ( $i = 0; $i < $n - 2; $i ++)
echo $arr [ $i ] , " " ;
} // Driver Code $arr = array ( 2, -6 ,3 , 5, 1);
$n = count ( $arr );
findElements( $arr , $n );
// This code is contributed by anuj_67. ?>; |
<script> // Sorting based Javascript program to find // all elements in array which have // atleast two greater elements itself. function findElements(arr, n)
{ arr.sort();
for (let i = 0; i < n - 2; i++)
document.write(arr[i] + " " );
} // Driver code let arr = [ 2, -6 ,3 , 5, 1]; let n = arr.length; findElements(arr, n); // This code is contributed by susmitakundugoaldanga </script> |
-6 1 2
Time Complexity: O(n Log n)
Auxiliary Space: O(1).
Method 3 (Efficient): In the second method we simply calculate the second maximum element of the array and print all element which is less than or equal to the second maximum.
Implementation:
// C++ program to find all elements // in array which have atleast two // greater elements itself. #include<bits/stdc++.h> using namespace std;
void findElements( int arr[], int n)
{ int first = INT_MIN,
second = INT_MIN;
for ( int i = 0; i < n; i++)
{
/* If current element is smaller
than first then update both first
and second */
if (arr[i] > first)
{
second = first;
first = arr[i];
}
/* If arr[i] is in between first
and second then update second */
else if (arr[i] > second)
second = arr[i];
}
for ( int i = 0; i < n; i++)
if (arr[i] < second)
cout << arr[i] << " " ;
} // Driver code int main()
{ int arr[] = { 2, -6, 3, 5, 1};
int n = sizeof (arr) / sizeof (arr[0]);
findElements(arr, n);
return 0;
} |
// Java program to find all elements // in array which have atleast // two greater elements itself. import java.util.*;
import java.io.*;
class GFG
{ static void findElements( int arr[], int n)
{ int first = Integer.MIN_VALUE;
int second = Integer.MAX_VALUE;
for ( int i = 0 ; i < n; i++)
{
// If current element is smaller
// than first then update both
// first and second
if (arr[i] > first)
{
second = first;
first = arr[i];
}
/* If arr[i] is in between
first and second
then update second */
else if (arr[i] > second)
second = arr[i];
}
for ( int i = 0 ; i < n; i++)
if (arr[i] < second)
System.out.print(arr[i] + " " ) ;
} // Driver code public static void main(String args[])
{ int arr[] = { 2 , - 6 , 3 , 5 , 1 };
int n = arr.length;
findElements(arr, n);
} } // This code is contributed by Sahil_Bansall |
# Python3 program to find all elements # in array which have atleast two # greater elements itself. import sys
def findElements(arr, n):
first = - sys.maxsize
second = - sys.maxsize
for i in range ( 0 , n):
# If current element is smaller
# than first then update both
# first and second
if (arr[i] > first):
second = first
first = arr[i]
# If arr[i] is in between first
# and second then update second
elif (arr[i] > second):
second = arr[i]
for i in range ( 0 , n):
if (arr[i] < second):
print (arr[i], end = " " )
# Driver code arr = [ 2 , - 6 , 3 , 5 , 1 ]
n = len (arr)
findElements(arr, n) # This code is contributed # by Smitha Dinesh Semwal |
// C# program to find all elements // in array which have atleast // two greater elements itself. using System;
class GFG
{ static void findElements( int []arr,
int n)
{
int first = int .MinValue;
int second = int .MaxValue;
for ( int i = 0; i < n; i++)
{
// If current element is smaller
// than first then update both
// first and second
if (arr[i] > first)
{
second = first;
first = arr[i];
}
/* If arr[i] is in between
first and second
then update second */
else if (arr[i] > second)
second = arr[i];
}
for ( int i = 0; i < n; i++)
if (arr[i] < second)
Console.Write(arr[i] + " " ) ;
} // Driver code public static void Main(String []args)
{ int []arr = { 2, -6, 3, 5, 1};
int n = arr.Length;
findElements(arr, n);
} } // This code is contributed by parashar... |
<?php // PHP program to find all elements // in array which have atleast two // greater elements itself. function findElements( $arr , $n )
{ $first = PHP_INT_MIN;
$second = PHP_INT_MIN;
for ( $i = 0; $i < $n ; $i ++)
{
/* If current element is smaller
than first then update both first
and second */
if ( $arr [ $i ] > $first )
{
$second = $first ;
$first = $arr [ $i ];
}
/* If arr[i] is in between first
and second then update second */
else if ( $arr [ $i ] > $second )
$second = $arr [ $i ];
}
for ( $i = 0; $i < $n ; $i ++)
if ( $arr [ $i ] < $second )
echo $arr [ $i ] , " " ;
} // Driver code
$arr = array (2, -6, 3, 5, 1);
$n = count ( $arr );
findElements( $arr , $n );
// This code is contributed by vishal tripathi. ?> |
<script> // Javascript program to find all elements // in array which have atleast // two greater elements itself. function findElements(arr, n)
{ let first = Number.MIN_VALUE;
let second = Number.MAX_VALUE;
for (let i = 0; i < n; i++)
{
// If current element is smaller
// than first then update both
// first and second
if (arr[i] > first)
{
second = first;
first = arr[i];
}
/* If arr[i] is in between
first and second
then update second */
else if (arr[i] > second)
second = arr[i];
}
for (let i = 0; i < n; i++)
if (arr[i] < second)
document.write(arr[i] + " " ) ;
} // Driver code let arr = [ 2, -6, 3, 5, 1 ]; let n = arr.length; findElements(arr, n); // This code is contributed by divyesh072019 </script> |
2 -6 1
Time Complexity: O(n)
Auxiliary Space: O(1).