Find all elements in array which have atleast two greater elements (original) (raw)

Last Updated : 23 Jul, 2025

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++ `

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

i<i < i<n; $i++) { $count = 0; for ($j = 0; j<j < j<n; $j++) if ($arr[$j] > arr[arr[arr[i]) $count++; if ($count >= 2) echo arr[arr[arr[i]." "; } } // Driver code $arr = array( 2, -6 ,3 , 5, 1); n=sizeof(n = sizeof(n=sizeof(arr); findElements($arr, $n); ?>

JavaScript

`

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++ `

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

arr,arr, arr,n) { sort($arr); for ($i = 0; i<i < i<n - 2; $i++) echo arr[arr[arr[i] , " "; } // Driver Code $arr = array( 2, -6 ,3 , 5, 1); n=count(n = count(n=count(arr); findElements($arr, $n); // This code is contributed by anuj_67. ?>

;

JavaScript

`

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++ `

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

i<i < i<n; $i++) { /* If current element is smaller than first then update both first and second */ if ($arr[$i] > $first) { second=second = second=first; first=first = first=arr[$i]; } /* If arr[i] is in between first and second then update second */ else if ($arr[$i] > $second) second=second = second=arr[$i]; } for($i = 0; i<i < i<n; $i++) if ($arr[$i] < $second) echo arr[arr[arr[i] , " "; } // Driver code $arr = array(2, -6, 3, 5, 1); n=count(n = count(n=count(arr); findElements($arr, $n); // This code is contributed by vishal tripathi. ?>

JavaScript

`

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