Dada una array ordenada arr[] de enteros y un entero k , la tarea es encontrar la cantidad de elementos en la array que son mayores que k . Tenga en cuenta que k puede o no estar presente en la array.
Ejemplos:
Entrada: arr[] = {2, 3, 5, 6, 6, 9}, k = 6
Salida: 1
Entrada: arr[] = {1, 1, 2, 5, 5, 7}, k = 8
Salida : 0
Enfoque: La idea es realizar una búsqueda binaria y encontrar el número de elementos mayor que k.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the count of elements // from the array which are greater than k int countGreater(int arr[], int n, int k) { int l = 0; int r = n - 1; // Stores the index of the left most element // from the array which is greater than k int leftGreater = n; // Finds number of elements greater than k while (l <= r) { int m = l + (r - l) / 2; // If mid element is greater than // k update leftGreater and r if (arr[m] > k) { leftGreater = m; r = m - 1; } // If mid element is less than // or equal to k update l else l = m + 1; } // Return the count of elements greater than k return (n - leftGreater); } // Driver code int main() { int arr[] = { 3, 3, 4, 7, 7, 7, 11, 13, 13 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 7; cout << countGreater(arr, n, k); return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the count of elements // from the array which are greater than k static int countGreater(int arr[], int n, int k) { int l = 0; int r = n - 1; // Stores the index of the left most element // from the array which is greater than k int leftGreater = n; // Finds number of elements greater than k while (l <= r) { int m = l + (r - l) / 2; // If mid element is greater than // k update leftGreater and r if (arr[m] > k) { leftGreater = m; r = m - 1; } // If mid element is less than // or equal to k update l else l = m + 1; } // Return the count of elements greater than k return (n - leftGreater); } // Driver code public static void main(String[] args) { int arr[] = { 3, 3, 4, 7, 7, 7, 11, 13, 13 }; int n = arr.length; int k = 7; System.out.println(countGreater(arr, n, k)); } } // This code is contributed by Code_Mech
Python3
# Python 3 implementation of the approach # Function to return the count of elements # from the array which are greater than k def countGreater(arr, n, k): l = 0 r = n - 1 # Stores the index of the left most element # from the array which is greater than k leftGreater = n # Finds number of elements greater than k while (l <= r): m = int(l + (r - l) / 2) # If mid element is greater than # k update leftGreater and r if (arr[m] > k): leftGreater = m r = m - 1 # If mid element is less than # or equal to k update l else: l = m + 1 # Return the count of elements # greater than k return (n - leftGreater) # Driver code if __name__ == '__main__': arr = [3, 3, 4, 7, 7, 7, 11, 13, 13] n = len(arr) k = 7 print(countGreater(arr, n, k)) # This code is contributed by # Surendra_Gangwar
C#
// C# implementation of the approach using System; class GFG { // Function to return the count of elements // from the array which are greater than k static int countGreater(int[]arr, int n, int k) { int l = 0; int r = n - 1; // Stores the index of the left most element // from the array which is greater than k int leftGreater = n; // Finds number of elements greater than k while (l <= r) { int m = l + (r - l) / 2; // If mid element is greater than // k update leftGreater and r if (arr[m] > k) { leftGreater = m; r = m - 1; } // If mid element is less than // or equal to k update l else l = m + 1; } // Return the count of elements greater than k return (n - leftGreater); } // Driver code public static void Main() { int[] arr = { 3, 3, 4, 7, 7, 7, 11, 13, 13 }; int n = arr.Length; int k = 7; Console.WriteLine(countGreater(arr, n, k)); } } // This code is contributed by Code_Mech
PHP
<?php // PHP implementation of the approach // Function to return the count of elements // from the array which are greater than k function countGreater($arr, $n, $k) { $l = 0; $r = $n - 1; // Stores the index of the left most element // from the array which is greater than k $leftGreater = $n; // Finds number of elements greater than k while ($l <= $r) { $m = $l + (int)(($r - $l) / 2); // If mid element is greater than // k update leftGreater and r if ($arr[$m] > $k) { $leftGreater = $m; $r = $m - 1; } // If mid element is less than // or equal to k update l else $l = $m + 1; } // Return the count of elements greater than k return ($n - $leftGreater); } // Driver code $arr = array(3, 3, 4, 7, 7, 7, 11, 13, 13); $n = sizeof($arr); $k = 7; echo countGreater($arr, $n, $k); // This code is contributed // by Akanksha Rai
Javascript
<script> // Javascript implementation of the approach // Function to return the count of elements // from the array which are greater than k function countGreater(arr, n, k) { var l = 0; var r = n - 1; // Stores the index of the left most element // from the array which is greater than k var leftGreater = n; // Finds number of elements greater than k while (l <= r) { var m = l + parseInt((r - l) / 2); // If mid element is greater than // k update leftGreater and r if (arr[m] > k) { leftGreater = m; r = m - 1; } // If mid element is less than // or equal to k update l else l = m + 1; } // Return the count of elements greater than k return (n - leftGreater); } // Driver code var arr = [3, 3, 4, 7, 7, 7, 11, 13, 13]; var n = arr.length; var k = 7; document.write( countGreater(arr, n, k)); </script>
3
Complejidad de tiempo: O(log(n)) donde n es el número de elementos en la array.
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Sakshi_Srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA