150. Evaluate Reverse Polish Notation
Description
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, and /. Each operand may be an integer or another expression.
Note that division between two integers should truncate toward zero.
It is guaranteed that the given RPN expression is always valid. That means the expression would always evaluate to a result, and there will not be any division by zero operation.
Example 1:
Example 2:
Example 3:
Constraints:
1 <= tokens.length <= 10^4
tokens[i]
is either an operator:"+"
,"-"
,"*"
, or"/"
, or an integer in the range[-200, 200]
.
Tags
Stack
Solution
使用栈解决。遍历输入数组,如果是数字则直接将其入栈,否则就是操作符,记作o
。依次弹出栈顶两个元素,记作b
和a
,然后将计算结果a o b
入栈。最后返回栈中唯一所剩元素。
A stack is applied here. Traverse every token in the input array. If the token is a number, then add it as an integer to the stack. Otherwise it should be an operator and let o
denote it. Pop 2 elements from the stack successively and denote them b
and a
respectively. Then push the result of a o b
into the stack. Finally, return the only remaining element in this stack.
Complexity
Time complexity:
Space complexity:
Code
Reference
Last updated
Was this helpful?