Encuentre el elemento máximo y mínimo en un conjunto en C++ STL

Dado un Conjunto, la tarea es encontrar el elemento máximo y mínimo de este conjunto en C++ STL. Ejemplos:

Input: set={1, 6, 15, 10, 5}
Output: max = 15, min = 1

Input: set={10, 20, 30, 40, 50, 60}
Output: max = 60, min = 10
  • Uso de los métodos set.begin() y set.end() Enfoque: Los elementos de un conjunto se almacenan ordenados. Entonces el elemento mínimo del conjunto residirá en el primer elemento y el elemento máximo en el último elemento. Por lo tanto, este primer y último elemento se pueden obtener con la ayuda de los métodos set.begin() y set.end() respectivamente. Programa: 

CPP

#include <bits/stdc++.h>
using namespace std;
 
// Function to print the set
void printSet(set<int> my_set)
{
 
    // Print the set
    cout << "Set: ";
    for (auto i : my_set)
        cout << i << " ";
 
    cout << '\n';
}
 
// Function to find the maximum element
int findMax(set<int> my_set)
{
 
    // Get the maximum element
    int max_element;
    if (!my_set.empty())
        max_element = *(my_set.rbegin());
 
    // return the maximum element
    return max_element;
}
 
// Function to find the minimum element
int findMin(set<int> my_set)
{
 
    // Get the minimum element
    int min_element;
    if (!my_set.empty())
        min_element = *my_set.begin();
 
    // return the minimum element
    return min_element;
}
 
int main()
{
 
    // Get the set
    set<int> my_set;
 
    // Add the elements in the set
    my_set.insert(1);
    my_set.insert(6);
    my_set.insert(15);
    my_set.insert(10);
    my_set.insert(5);
 
    // Print the set
    printSet(my_set);
 
    // Get the minimum element
    cout << "Minimum element: "
        << findMin(my_set)
        << endl;
 
    // Get the maximum element
    cout << "Maximum element: "
        << findMax(my_set)
        << endl;
}
Producción:

Set: 1 5 6 10 15 
Minimum element: 1
Maximum element: 15
  • Uso de los métodos set.rbegin() y set.rend() Enfoque: Los elementos de un conjunto se almacenan ordenados. Entonces el elemento mínimo del conjunto residirá en el primer elemento y el elemento máximo en el último elemento. Por lo tanto, este primer y último elemento se pueden recuperar con la ayuda de los métodos set.rend() y set.rbegin() respectivamente. Programa: 

CPP

#include <bits/stdc++.h>
using namespace std;
 
// Function to print the set
void printSet(set<int> my_set)
{
 
    // Print the set
    cout << "Set: ";
    for (auto i : my_set)
        cout << i << " ";
 
    cout << '\n';
}
 
// Function to find the maximum element
int findMax(set<int> my_set)
{
 
    // Get the maximum element
    int max_element;
    if (!my_set.empty())
        max_element = *my_set.rbegin();
 
    // return the maximum element
    return max_element;
}
 
// Function to find the minimum element
int findMin(set<int> my_set)
{
 
    // Get the minimum element
    int min_element;
    if (!my_set.empty())
        min_element = *(--my_set.rend());
 
    // return the minimum element
    return min_element;
}
 
int main()
{
 
    // Get the set
    set<int> my_set;
 
    // Add the elements in the set
    my_set.insert(1);
    my_set.insert(6);
    my_set.insert(15);
    my_set.insert(10);
    my_set.insert(5);
 
    // Print the set
    printSet(my_set);
 
    // Get the minimum element
    cout << "Minimum element: "
        << findMin(my_set)
        << endl;
 
    // Get the maximum element
    cout << "Maximum element: "
        << findMax(my_set)
        << endl;
}
Producción:

Set: 1 5 6 10 15 
Minimum element: 1
Maximum element: 15

Complejidad de tiempo: Ambos métodos son de complejidad de tiempo constante. En conjunto, el elemento máximo se almacena por fin, por lo que podemos devolver el último elemento usando el método rbegin() en tiempo O(1). De manera similar, para el elemento mínimo usando el método begin() en tiempo O(1).

Publicación traducida automáticamente

Artículo escrito por Bhashkar_P y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *