当前位置: 代码迷 >> 综合 >> 30.包含min函数的栈 与31.栈的压入、弹出序列
  详细解决方案

30.包含min函数的栈 与31.栈的压入、弹出序列

热度:50   发布时间:2023-10-17 00:11:24.0

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;
};

 

  相关解决方案