30.包含min函数的栈
class Solution {
public:vector<int> vec;int min_val=INT_MAX,min_cnt=0;void push(int value) {vec.push_back(value);if(min_cnt==0){min_val=value,min_cnt=1;}else if(min_val>value){min_val=value,min_cnt=1;}}void pop() {int val=vec.back();vec.pop_back();if(min_val==val){min_cnt--;}if(min_cnt==0){min_val=INT_MAX;for(const int& x:vec){if(min_val>x){min_val=x,min_cnt=1;}else if(min_val==x){min_cnt++;}}}}int top() {return vec.back();}int min() {return min_val;}
};
31.栈的压入、弹出序列
class Solution {
public:bool IsPopOrder(vector<int> pushV,vector<int> popV) {int index = 0;for(int i = 0; i < pushV.size(); ++i){s.push(pushV[i]);while(!s.empty() && popV[index] == s.top()){s.pop();index++;}}return s.empty();}
private:stack<int> s;
};