150. Evaluate Reverse Polish Notation

Medium

5.8K

884

You are given an array of strings `tokens`

that represents an arithmetic expression in a Reverse Polish Notation.

Evaluate the expression. Return *an integer that represents the value of the expression*.

**Note** that:

- The valid operators are
`'+'`

,`'-'`

,`'*'`

, and`'/'`

. - Each operand may be an integer or another expression.
- The division between two integers always
**truncates toward zero**. - There will not be any division by zero.
- The input represents a valid arithmetic expression in a reverse polish notation.
- The answer and all the intermediate calculations can be represented in a
**32-bit**integer.

**Example 1:**

Input:tokens = ["2","1","+","3","*"]Output:9Explanation:((2 + 1) * 3) = 9

**Example 2:**

Input:tokens = ["4","13","5","/","+"]Output:6Explanation:(4 + (13 / 5)) = 6

**Example 3:**

Input:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]Output:22Explanation:((10 * (6 / ((9 + 3) * -11))) + 17) + 5 = ((10 * (6 / (12 * -11))) + 17) + 5 = ((10 * (6 / -132)) + 17) + 5 = ((10 * 0) + 17) + 5 = (0 + 17) + 5 = 17 + 5 = 22

**Constraints:**

`1 <= tokens.length <= 10`

^{4}`tokens[i]`

is either an operator:`"+"`

,`"-"`

,`"*"`

, or`"/"`

, or an integer in the range`[-200, 200]`

.

Accepted

664K

Submissions

1.4M

Acceptance Rate

46.2%

Seen this question in a real interview before?

1/4

Yes

No

Discussion (0)

Related Topics

Copyright ©️ 2023 LeetCode All rights reserved