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