栈——OJ题
2023-12-14 12:17:48
一、最小栈
1、题目讲解
2、思路讲解
3、代码实现
class MinStack {
public:
MinStack() {}
void push(int val) {
st.push(val);
if(minst.empty() || st.top()<=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();
}
stack<int> st;
stack<int> minst;
};
二、栈的压入、弹出序列
1、题目讲解
2、思路讲解
3、代码实现
bool IsPopOrder(vector<int>& pushV, vector<int>& popV)
{
stack<int> s;
int pushi=0,popi=0;
for(auto ch:pushV)
{
s.push(pushV[pushi]);
pushi++;
while(!s.empty() && s.top()==popV[popi])
{
s.pop();
popi++;
}
}
return s.empty();
}
三、逆波兰表达式求值
1、题目讲解
2、思路讲解
3、代码实现
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> s;
for(auto& ch:tokens)
{
if(ch=="+" || ch=="-" || ch=="*" || ch=="/" )
{
int right=s.top();
s.pop();
int left=s.top();
s.pop();
switch(ch[0])
{
case '+':
s.push(left+right);
break;
case '-':
s.push(left-right);
break;
case '*':
s.push(left*right);
break;
case '/':
s.push(left/right);
break;
}
}
else
{
s.push(stoi(ch));
}
}
return s.top();
}
};
文章来源:https://blog.csdn.net/2301_78995005/article/details/134983882
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!