Problème
Une Stack<T> générique fonctionne pour n'importe quel type. Ici, vous allez étendre l'idée : une pile d'entiers qui peut aussi indiquer son minimum en temps constant.
Traitez les opérations dans l'ordre :
push <x>: empile x.pop: supprime la valeur du sommet (ignoré lorsque la pile est vide).min: indique la plus petite valeur actuellement dans la pile, ou -1 si elle est vide.
Implémentez min_stack_operations(operations).
Entrée
operations: Les opérations.
Sortie
Retournez les réponses des opérations min, dans l'ordre.
Contraintes
1 ≤ nombre d'opérations ≤ 200,000
0 ≤ x ≤ 10^9
Exemples
Entrée :
operations = ["push 5", "push 3", "min", "pop", "min"]
Sortie attendue :
expected = [3, 5]
Entrée :
std::vector<std::string> operations = {"push 5", "push 3", "min", "pop", "min"};
Sortie attendue :
std::vector<long long> expected = {3, 5};
Entrée :
string[] operations = new string[] {"push 5", "push 3", "min", "pop", "min"};
Sortie attendue :
long[] expected = new long[] {3, 5};
Explication
Avec 5 et 3 sur la pile, le minimum est 3. Après avoir retiré 3, il ne reste que 5 : [3, 5].
Entrée :
operations = ["min", "pop", "push 7", "min"]
Sortie attendue :
expected = [-1, 7]
Entrée :
std::vector<std::string> operations = {"min", "pop", "push 7", "min"};
Sortie attendue :
std::vector<long long> expected = {-1, 7};
Entrée :
string[] operations = new string[] {"min", "pop", "push 7", "min"};
Sortie attendue :
long[] expected = new long[] {-1, 7};
Explication
La pile vide renvoie -1 et le pop est ignoré ; puis le minimum est 7 : [-1, 7].
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
À côté de chaque valeur, stockez le minimum de la pile à ce moment-là.
Indice 2
Le minimum actuel est alors simplement le sommet de cette seconde pile.
Indice 3
Ignorez pop sur une pile vide et répondez -1 à min quand elle est vide.
Complexité attendue
temps O(nombre d'opérations), espace supplémentaire O(nombre d'opérations)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.