



- class MinStack {
- public:
- MinStack() {
-
- }
-
- void push(int val) {
- st.push(val);
- //两种情况需要更新最小值
- //1.最小栈为空(就是存最小值的那个栈)
- //2.插入的值小于或等于最小栈的栈顶元素
- if(minstack.empty()||minstack.top()>=val)
- {
- minstack.push(val);
- }
- }
-
- void pop() {
- int front=st.top();
- st.pop();
- if(front==minstack.top())
- minstack.pop();
-
- }
-
- int top() {
- return st.top();
- }
-
- int getMin() {
- return minstack.top();
- }
- //定义两个栈
- stack<int> st;
- stack<int> minstack;
- };
-

代码:- class Solution {
- public:
-
- bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
- //表示当前弹出顺序所在位置的下标
- int cur=0;
- stack<int> st;
-
- for(auto e: pushV)
- {
- st.push(e);
-
- while(!st.empty()&&st.top()==popV[cur])
- {
- cur++;
- st.pop();
- }
- }
-
- return st.empty();
- }
- };
