思路:双指针记录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;
    }
}