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 elementsExplanation:
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
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
;
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
JavaScript
`
Time Complexity: O(n)
Auxiliary Space: O(1).