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

• Difficulty Level : Easy
• Last Updated : 22 Jul, 2022

tGiven 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``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);``    ``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

 ` ``\$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

 ``

Output

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

## C++

 `// Sorting based C++ program to``// find all elements in array``// which have atleast two greater``// elements itself.``#include``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);``    ``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

 `;`

## Javascript

 ``

Output

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

 `// C++ program to find all elements``// in array which have atleast two``// greater elements itself.``#include``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);``    ``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

 ` ``\$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

 ``

Output

`2 -6 1 `

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.

My Personal Notes arrow_drop_up