day11 代码随想录算法训练营 150. 逆波兰表达式求值

发布时间 2024-01-08 15:16:29作者: o蹲蹲o

题目:150. 逆波兰表达式求值

我的感悟:

  • 注意int(a/b)是0向截断 比如 -2.3 会得到-2;  比如3.6 会得到3
  • a//b是向下取整,比如是-2.3 会得到-3;比如3.6 会得到3
  • 主要是负数不同

理解难点:

  • 0向取整注意
  • 注意先弹出的是右边的,(想象二叉树的结构。先弹出的是右边节点)

代码难点:

代码示例:

class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        stack = []
        for ch in tokens:
            if ch in ("+","-","/","*"):
                num_right = stack.pop() # 先弹出的是右边的
                num_left = stack.pop()  # 后弹出的是左边的
                if ch == "+":
                    stack.append(num_left+num_right)
                if ch == "-":
                    stack.append(num_left-num_right)
                if ch == "*":
                    stack.append(num_left*num_right)
                if ch == "/":     
                    stack.append(int(num_left/num_right))    # int是0向截断,//是向下截断。
            else:   # 其他都是数字  # 转化为int类型存进去
                stack.append(int(ch))
        return stack.pop()


                

通过截图:

扩展写法:

资料:

题目链接/文章讲解/视频讲解:https://programmercarl.com/0150.%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.html