Maison >développement back-end >C++ >En C++, traduisez ce qui suit en chinois : Recherchez l'élément le plus petit suivant

En C++, traduisez ce qui suit en chinois : Recherchez l'élément le plus petit suivant

PHPz
PHPzavant
2023-09-20 16:29:071163parcourir

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 .

Algorithme

  • 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.

Implementation

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;
}

Output

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer