思路:双指针记录str1,str2的位置,遍历数组更新结果。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
class mystack{
private:
stack<int> s,mins;
public:
mystack(){};
void push(int val){
s.push(val);
if(mins.empty()) mins.push(val);
else mins.push(min(val,mins.top()));
}
void pop(){
if(s.empty()) return;
s.pop();
mins.pop();
}
int getMin(){
if(mins.empty()) return -1;
return mins.top();
}
};
int main(){
int n,temp;
cin>>n;
string s;
mystack mins;
while(n--){
cin>>s;
if(s=="push"){
cin>>temp;
mins.push(temp);
}
else if(s=="pop") mins.pop();
else if(s=="getMin")
cout<<mins.getMin()<<endl;
}
}