155. 最小栈 - 力扣(LeetCode)
class MinStack {
public:
MinStack() {}
void push(int val) {
st.push(val);
if(minst.empty() || val <= minst.top() )
{
minst.push(val);
}
}
void pop() {
int top =st.top();
st.pop();
if(top == minst.top())
minst.pop();
}
int top() {
return st.top();
}
int getMin() {
return minst.top();
}
stack<int> st;
stack<int> minst;
};
150. 逆波兰表达式求值 - 力扣(LeetCode)
class Solution {
public:
int evalRPN(vector<string>& tokens) {
//利用栈
//入栈,如果入栈的元素是一个操作符,进行计算,再入栈
stack<int> st;
set<string> s{"+","-","*","/"};
for(auto& str : tokens)
{
if(s.find(str) == s.end())//不是操作符
{
st.push(stoi(str));
}
else//是操作符
{
int right = st.top();
st.pop();
int left = st.top();
st.pop();
//对操作符判断
switch(str[0])
{
case'+':
st.push(left + right);
break;
case'-':
st.push(left - right);
break;
case'*':
st.push(left * right);
break;
case'/':
st.push(left / right);
break;
}
}
}
return st.top();
}
};
224. 基本计算器 - 力扣(LeetCode)
