Escriba un programa para imprimir todos los LÍDERES en la array. Un elemento es líder si es mayor que todos los elementos a su lado derecho. Y el elemento más a la derecha es siempre un líder. Por ejemplo, en el arreglo {16, 17, 4, 3, 5, 2}, los líderes son 17, 5 y 2.
Deje que el arreglo de entrada sea arr[] y el tamaño del arreglo sea size .
Método 1 (Simple)
Use dos bucles. El ciclo externo va desde 0 hasta tamaño – 1 y uno por uno selecciona todos los elementos de izquierda a derecha. El bucle interno compara el elemento elegido con todos los elementos de su lado derecho. Si el elemento seleccionado es mayor que todos los elementos a su lado derecho, entonces el elemento seleccionado es el líder.
C#
// C# program to print // leaders in array using System; class GFG { void printLeaders(int []arr, int size) { for (int i = 0; i < size; i++) { int j; for (j = i + 1; j < size; j++) { if (arr[i] <=arr[j]) break; } // the loop didn't break if (j == size) Console.Write(arr[i] + " "); } } // Driver Code public static void Main() { GFG lead = new GFG(); int []arr = new int[]{16, 17, 4, 3, 5, 2}; int n = arr.Length; lead.printLeaders(arr, n); } } // This code is contributed by // Akanksha Rai(Abby_akku)
Producción:
17 5 2
Complejidad de tiempo: O(n*n)
Método 2 (Escanear desde la derecha)
Escanee todos los elementos de derecha a izquierda en una array y realice un seguimiento del máximo hasta ahora. Cuando el máximo cambie su valor, imprímalo.
La imagen de abajo es una ejecución en seco del enfoque anterior:
A continuación se muestra la implementación del enfoque anterior:
C#
// C# program to find Leaders in an array using System; class LeadersInArray { // C# Function to print leaders // in an array void printLeaders(int []arr, int size) { int max_from_right = arr[size - 1]; // Rightmost element is always leader Console.Write(max_from_right +" "); for (int i = size - 2; i >= 0; i--) { if (max_from_right < arr[i]) { max_from_right = arr[i]; Console.Write(max_from_right +" "); } } } // Driver Code public static void Main(String[] args) { LeadersInArray lead = new LeadersInArray(); int []arr = new int[]{16, 17, 4, 3, 5, 2}; int n = arr.Length; lead.printLeaders(arr, n); } } // This code is contributed // by Akanksha Rai(Abby_akku)
Producción:
2 5 17
Complejidad de tiempo: O(n)
Consulte el artículo completo sobre Líderes en una array para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA