leetcode算法(150.逆波兰表达式求值)

逆波兰表达式:是一种后缀表达式,所谓后缀就是指运算符写在后面。(对二叉树进行后序遍历)

适合用栈操作运算:遇到数字则入栈;遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中。

  • tokens[i]std::string 类型(因为 tokensvector<string>

  • '+'char 类型(单字符字面量)

  • 所以用 "+"

cpp 复制代码
class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        // 力扣修改了后台测试数据,需要用long long来避免整数溢出
        stack<long long> st; // 使用栈存储运算的中间结果
        
        for (int i = 0; i < tokens.size(); i++) {
            // 判断当前token是否为运算符
            if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
                // 如果是运算符,从栈顶取出两个操作数
                // 注意顺序:先弹出的是第二个操作数(后入栈的)
                long long num1 = st.top();
                st.pop();
                long long num2 = st.top();
                st.pop();
                
                // 根据运算符进行相应运算,注意操作数顺序
                if (tokens[i] == "+") st.push(num2 + num1);   // 加法
                if (tokens[i] == "-") st.push(num2 - num1);   // 减法(注意顺序)
                if (tokens[i] == "*") st.push(num2 * num1);   // 乘法
                if (tokens[i] == "/") st.push(num2 / num1);   // 整数除法
            } else {
                // 当前token是数字,将其转换为long long并入栈
                // stoll: string to long long
                st.push(stoll(tokens[i]));
            }
        }

        // 栈中最后剩下的就是计算结果
        long long result = st.top();
        st.pop(); // 弹出栈顶元素(清理栈,虽然函数返回前不pop也可以)
        return result; // 返回计算结果(隐式转换为int)
    }
};
相关推荐
技术狂人16830 分钟前
(六)大模型算法与优化 15 题!量化 / 剪枝 / 幻觉缓解,面试说清性能提升逻辑(深度篇)
人工智能·深度学习·算法·面试·职场和发展
tobias.b1 小时前
408真题解析-2009-8-数据结构-B树-定义及性质
数据结构·b树·计算机考研·408考研·408真题
CoovallyAIHub1 小时前
为你的 2026 年计算机视觉应用选择合适的边缘 AI 硬件
深度学习·算法·计算机视觉
汉克老师1 小时前
GESP2025年12月认证C++六级真题与解析(单选题8-15)
c++·算法·二叉树·动态规划·哈夫曼编码·gesp6级·gesp六级
刘立军1 小时前
程序员应该熟悉的概念(8)嵌入和语义检索
人工智能·算法
hk11241 小时前
【Architecture/Refactoring】2026年度企业级遗留系统重构与高并发架构基准索引 (Grandmaster Edition)
数据结构·微服务·系统架构·数据集·devops
im_AMBER1 小时前
Leetcode 95 分割链表
数据结构·c++·笔记·学习·算法·leetcode·链表
Boilermaker19921 小时前
[算法基础] FooldFill(DFS、BFS)
算法·深度优先·宽度优先
leiming61 小时前
c++ find 算法
算法
CoovallyAIHub1 小时前
YOLOv12之后,AI在火场如何进化?2025最后一篇YOLO论文揭示:要在浓烟中看见关键,仅靠注意力还不够
深度学习·算法·计算机视觉