Min Stack Implementation C++


#1

stack<pair<int, int>> St;

MinStack::MinStack() {
while(!St.empty()){
St.pop();
}
}

void MinStack::push(int x) {
if(St.empty()){
St.push({x, x});
}
else{
St.push({x, min(x, St.top().second)});
}
}

void MinStack::pop() {
if(!St.empty()){
St.pop();
}
}

int MinStack::top() {
return (St.empty()) ? -1 : St.top().first;
}

int MinStack::getMin() {
return (St.empty()) ? -1 : St.top().second;
}