Skip to content
Related Articles

Related Articles

Improve Article

Find all elements in array which have at-least two greater elements

  • Difficulty Level : Easy
  • Last Updated : 28 Apr, 2021

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. 



C++




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




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




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




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




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

Javascript




<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>
Output
2 -6 1 

Time Complexity: O(n2)

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. 

C++




// 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;
}

Java




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

Python3




# 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

C#




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




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

Javascript




<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>
Output
-6 1 2 

Time Complexity: O(n Log n)

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. 

C++




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




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




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




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

Javascript




<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>
Output
2 -6 1 

Time Complexity: O(n)

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 contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :