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 elements
Explanation:
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:
C++
#include<bits/stdc++.h>
using namespace std;
void findElements( int arr[], int n)
{
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] << " " ;
}
}
int main()
{
int arr[] = { 2, -6 ,3 , 5, 1};
int n = sizeof (arr) / sizeof (arr[0]);
findElements(arr, n);
return 0;
}
|
Java
import java.util.*;
import java.io.*;
class GFG
{
static void findElements( int arr[],
int n)
{
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] + " " );
}
}
public static void main(String args[])
{
int arr[] = { 2 , - 6 , 3 , 5 , 1 };
int n = arr.length;
findElements(arr, n);
}
}
|
Python3
def findElements( arr, n):
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 = " " )
arr = [ 2 , - 6 , 3 , 5 , 1 ]
n = len (arr)
findElements(arr, n)
|
C#
using System;
class GFG
{
static void findElements( int []arr, int n)
{
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] + " " );
}
}
public static void Main(String []args)
{
int []arr = {2, -6 ,3 , 5, 1};
int n = arr.Length;
findElements(arr, n);
}
}
|
PHP
<?php
function findElements( $arr , $n )
{
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 ]. " " ;
}
}
$arr = array ( 2, -6 ,3 , 5, 1);
$n = sizeof( $arr );
findElements( $arr , $n );
?>
|
Javascript
<script>
function findElements(arr, n)
{
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] + " " );
}
}
let arr = [2, -6 ,3 , 5, 1];
let n = arr.length;
findElements(arr, n);
</script>
|
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:
C++
#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] << " " ;
}
int main()
{
int arr[] = { 2, -6 ,3 , 5, 1};
int n = sizeof (arr) / sizeof (arr[0]);
findElements(arr, n);
return 0;
}
|
Java
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] + " " );
}
public static void main(String args[])
{
int arr[] = { 2 , - 6 , 3 , 5 , 1 };
int n = arr.length;
findElements(arr, n);
}
}
|
Python3
def findElements(arr, n):
arr.sort()
for i in range ( 0 , n - 2 ):
print (arr[i], end = " " )
arr = [ 2 , - 6 , 3 , 5 , 1 ]
n = len (arr)
findElements(arr, n)
|
C#
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] + " " );
}
public static void Main(String []args)
{
int []arr = { 2, -6 ,3 , 5, 1};
int n = arr.Length;
findElements(arr, n);
}
}
|
PHP
<?php
function findElements( $arr , $n )
{
sort( $arr );
for ( $i = 0; $i < $n - 2; $i ++)
echo $arr [ $i ] , " " ;
}
$arr = array ( 2, -6 ,3 , 5, 1);
$n = count ( $arr );
findElements( $arr , $n );
?>;
|
Javascript
<script>
function findElements(arr, n)
{
arr.sort();
for (let i = 0; i < n - 2; i++)
document.write(arr[i] + " " );
}
let arr = [ 2, -6 ,3 , 5, 1];
let n = arr.length;
findElements(arr, n);
</script>
|
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++
#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 (arr[i] > first)
{
second = first;
first = arr[i];
}
else if (arr[i] > second)
second = arr[i];
}
for ( int i = 0; i < n; i++)
if (arr[i] < second)
cout << arr[i] << " " ;
}
int main()
{
int arr[] = { 2, -6, 3, 5, 1};
int n = sizeof (arr) / sizeof (arr[0]);
findElements(arr, n);
return 0;
}
|
Java
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 (arr[i] > first)
{
second = first;
first = arr[i];
}
else if (arr[i] > second)
second = arr[i];
}
for ( int i = 0 ; i < n; i++)
if (arr[i] < second)
System.out.print(arr[i] + " " ) ;
}
public static void main(String args[])
{
int arr[] = { 2 , - 6 , 3 , 5 , 1 };
int n = arr.length;
findElements(arr, n);
}
}
|
Python3
import sys
def findElements(arr, n):
first = - sys.maxsize
second = - sys.maxsize
for i in range ( 0 , n):
if (arr[i] > first):
second = first
first = arr[i]
elif (arr[i] > second):
second = arr[i]
for i in range ( 0 , n):
if (arr[i] < second):
print (arr[i], end = " " )
arr = [ 2 , - 6 , 3 , 5 , 1 ]
n = len (arr)
findElements(arr, n)
|
C#
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 (arr[i] > first)
{
second = first;
first = arr[i];
}
else if (arr[i] > second)
second = arr[i];
}
for ( int i = 0; i < n; i++)
if (arr[i] < second)
Console.Write(arr[i] + " " ) ;
}
public static void Main(String []args)
{
int []arr = { 2, -6, 3, 5, 1};
int n = arr.Length;
findElements(arr, n);
}
}
|
PHP
<?php
function findElements( $arr , $n )
{
$first = PHP_INT_MIN;
$second = PHP_INT_MIN;
for ( $i = 0; $i < $n ; $i ++)
{
if ( $arr [ $i ] > $first )
{
$second = $first ;
$first = $arr [ $i ];
}
else if ( $arr [ $i ] > $second )
$second = $arr [ $i ];
}
for ( $i = 0; $i < $n ; $i ++)
if ( $arr [ $i ] < $second )
echo $arr [ $i ] , " " ;
}
$arr = array (2, -6, 3, 5, 1);
$n = count ( $arr );
findElements( $arr , $n );
?>
|
Javascript
<script>
function findElements(arr, n)
{
let first = Number.MIN_VALUE;
let second = Number.MAX_VALUE;
for (let i = 0; i < n; i++)
{
if (arr[i] > first)
{
second = first;
first = arr[i];
}
else if (arr[i] > second)
second = arr[i];
}
for (let i = 0; i < n; i++)
if (arr[i] < second)
document.write(arr[i] + " " ) ;
}
let arr = [ 2, -6, 3, 5, 1 ];
let n = arr.length;
findElements(arr, n);
</script>
|
Time Complexity: O(n)
Auxiliary Space: O(1).
This article is contributed by DANISH_RAZA . If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.