题解 | #牛的表达式计算器# 后缀表达式求值

牛的表达式计算器

https://www.nowcoder.com/practice/261e7f01438f414c92f59c0059d3a906

知识点

后缀表达式 栈

思路

后缀表达式求值,可以一个栈来记录数字,每当遇到预算符号,取出栈顶的两个数字进行运算,把结果重新入栈。

最后的栈顶即为全部的计算结果。

时间复杂度

只遍历了一遍数组,每次出入栈的次数是常数次,时间复杂度为O(n)

AC code(C++)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param tokens string字符串vector 
     * @return int整型
     */
    int calculatePostfix(vector<string>& tokens) {
        stack<int> nums;
        for (auto& s : tokens) {
            if (s == "+") {
                auto a = nums.top();
                nums.pop();
                auto b = nums.top();
                nums.pop();
                nums.push(b + a);
            }
            else if (s == "-") {
                auto a = nums.top();
                nums.pop();
                auto b = nums.top();
                nums.pop();
                nums.push(b - a);
            }
            else if (s == "*") {
                auto a = nums.top();
                nums.pop();
                auto b = nums.top();
                nums.pop();
                nums.push(b * a);
            }
            else if (s == "/") {
                auto a = nums.top();
                nums.pop();
                auto b = nums.top();
                nums.pop();
                nums.push(b / a);
            }
            else {
                auto a = stoi(s);
                nums.push(a);
            }
        }
        return nums.top();
    }
};

全部评论

相关推荐

10-10 11:38
已编辑
湖南理工大学 Java
小浪_Coding:多沟通叭, 公式简历+学历一般的话难找
点赞 评论 收藏
分享
10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务