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

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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 codepublic 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 codearr = [ 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 codepublic 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)
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++
Java
Python3
C#
PHP
Javascript
// 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 Codeint 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 codepublic 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 sourcearr = [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 codepublic 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)
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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 codepublic 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 codearr = [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 codepublic 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 codelet 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)
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.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
parashar
jit_t
vt_m
prakharcsegbu
mayanktyagi1709
susmitakundugoaldanga
divyesh072019
Amazon
Order-Statistics
Arrays
Sorting
Amazon
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Top 50 Array Coding Problems for Interviews
Introduction to Arrays
Multidimensional Arrays in Java
Linear Search
Maximum and minimum of an array using minimum number of comparisons