linux网站服务器配置,网络推广怎么优化,wordpress查看版本号,wordpress怎么安装多说文章目录 专题一#xff1a;栈系列1. 中缀表达式转后缀表达式#xff08;逆波兰式#xff09;2. 有效的括号3. 用栈实现队列4. 最小栈 专题一#xff1a;栈系列 1. 中缀表达式转后缀表达式#xff08;逆波兰式#xff09; 算法原理 2. 有效的括号 题目链接
算法原理 代… 文章目录 专题一栈系列1. 中缀表达式转后缀表达式逆波兰式2. 有效的括号3. 用栈实现队列4. 最小栈 专题一栈系列 1. 中缀表达式转后缀表达式逆波兰式 算法原理 2. 有效的括号 题目链接
算法原理 代码编写
class Solution
{
public:bool isValid(string s) {stackchar st;for(const auto ch : s){if(ch ( || ch [ || ch {) st.push(ch);else {// 1、右括号多if(st.empty()) return false;char top st.top();if(top ( ch ) || top [ ch ] || top { ch }) st.pop();else return false; // 2、括号不匹配}}return st.empty(); // 3、最后若栈为空说明左括号全部正确匹配完成}
};3. 用栈实现队列 题目链接
算法原理
代码编写
class MyQueue
{
private:stackint st1; //负责入队列stackint st2; //负责出队列public:// 构造函数什么都不需要做MyQueue() {}// 入队列void push(int x) {st1.push(x);}// 出队列int pop() {// 队列为空则返回-1if(st1.empty() st2.empty()) return -1; // 若 st2 为空则需要从 st1 中把元素更新过来if(st2.empty()) {while(!st1.empty()) {st2.push(st1.top());st1.pop();}}// st2 栈顶元素即使队列的对首元素删除即可int ans st2.top();st2.pop();return ans;}int peek() {// 队列为空则返回-1if(st1.empty() st2.empty()) return -1;// 若 st2 为空则需要从 st1 中把元素更新过来if(st2.empty()){while(!st1.empty()) {st2.push(st1.top());st1.pop();}}// st2 栈顶元素即使队列的对首元素返回即可return st2.top();}// 队列判空bool empty() {return st1.empty() st2.empty();}
};4. 最小栈 题目链接
算法原理
代码编写
class MinStack
{
private:stackint st; //存放栈元素stackint minSt;//存放st中最小元素序列public:// 默认构造函数MinStack() {}// 栈中插入元素void push(int val) {st.push(val);// 1、若最小栈为空说明是第一个插入元素此时 val 直接入最小栈// 2、若最小栈不为空则比较最小栈栈顶元素再决定是否插入最小栈if(minSt.empty()) minSt.push(val);else{if(val minSt.top()) minSt.push(val);}}// 弹出栈顶元素void pop() {// 若栈顶元素为栈中最小元素则需要同步更新最小栈if(st.top() minSt.top()) minSt.pop();// 弹出栈顶元素st.pop();}// 获取栈顶元素int top() {return st.top();}// 获取栈中最小元素int getMin() {return minSt.top();}
};