Maison >développement back-end >C++ >En C++, traduisez ce qui suit en chinois : Recherchez l'élément le plus petit suivant
L'élément plus petit suivant est l'élément du premier élément plus petit après lui. Regardons un exemple.
arr = [1, 2, 3, 5, 4] L'élément le plus petit suivant de
5 est 4, l'élément le plus petit suivant des éléments 1 et 2 est, 3 est -1 car il n'y a pas d'élément plus petit derrière ces éléments .
Initialiser le tableau avec des nombres aléatoires
Initialiser la pile.
Ajoutez le premier élément à la pile.
Parcourez les éléments d'un tableau.
Si la pile est vide, ajoutez l'élément actuel à la pile.
Lorsque l'élément actuel est plus petit que l'élément supérieur de la pile.
Imprimez l'élément supérieur et faites de l'élément le plus petit suivant l'élément actuel. p>
Élément supérieur pop-up.
Ajoutez des éléments à la pile.
Quand la pile n'est pas vide.
Imprimez l'élément du prochain élément plus petit sous la forme -1.
Ci-dessous se trouve l'implémentation C++ de l'algorithme ci-dessus
#include <bits/stdc++.h> using namespace std; void nextSmallerElements(int arr[], int n) { stack<int> s; s.push(arr[0]); for (int i = 1; i < n; i++) { if (s.empty()) { s.push(arr[i]); continue; } while (!s.empty() && s.top() > arr[i]) { cout << s.top() << " -> " << arr[i] << endl; s.pop(); } s.push(arr[i]); } while (!s.empty()) { cout << s.top() << " -> " << -1 << endl; s.pop(); } } int main() { int arr[] = { 5, 4, 3, 2, 1 }; int n = 5; nextSmallerElements(arr, n); return 0; }
Si vous exécutez le code ci-dessus, vous obtiendrez le résultat suivant.
1 -> 2 2 -> 3 3 -> 4 4 -> 5 5 -> -1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!