【栈和队列|150. 逆波兰表达式求值】要求:1,2,+类似的表达式计算
思路:栈
class Solution {
public:
int evalRPN(vector>& tokens) {
stack stk;
// 牛一个栈
for (string& token : tokens) { // 遍历tokens
if (token == "+" || token == "-" || token == "*" || token == "/") { // 若遇到运算符则启动出栈
int num1 = stk.top();
stk.pop();
int num2 = stk.top();
stk.pop();
// 接连弹出两个数 并按照规则运算后塞回去
if (token == "+") stk.push(num1 + num2);
if (token == "-") stk.push(num2 - num1);
if (token == "*") stk.push(num1 * num2);
if (token == "/") stk.push(num2 / num1);
} else {stk.push(stoi(token));
} // 如果是正常数的话转化成INT(标准库stoi函数)后塞进去
}
return stk.top();
}
};
推荐阅读
- 笔记|单调栈详解-基于LeetCode的题目
- 笔记|LeetCode每日一题题解(1189. “气球” 的最大数量)
- 笔记|LeetCode每日一题题解(917. 仅仅反转字母-双指针-python和C++)
- leetcode|【LC】31. 下一个排列
- 数据结构与算法|单调栈-部分有序
- 数据结构|劈叉都会还不会下腰吗((二叉树经典面试题详解))
- c语言|leetcode707 设计链表 (C语言实现)
- 算法|寻找峰值-162-[中等]- [二分查找模板 - II ]
- 每日一道算法题|Leetcode 213.打家劫舍 II &剑指Offer II 090. 环形房屋偷盗