Find all elements in array which have at-least two greater elements
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
<?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> |
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<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> |
-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<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> |
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.
Please Login to comment...