Avalie a notação polonesa reversa
Guia detalhado e implementação de Python para o problema 'Avaliar notação polonesa reversa'.
1. Aprenda
O problema de 'Avaliar notação polonesa reversa' é um desafio importante na seção Pilha.
Esta implementação concentra-se na lógica de nível fácil em Python.
Priorizamos a precisão técnica e a legibilidade do código em nossas soluções fornecidas.
2. Real-World Applications
3. Visual Intuition
Visualizando o fluxo lógico para avaliar a notação polonesa reversa.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Leia atentamente a declaração do problema para Avaliar a notação polonesa reversa.
2. Formulate brute force
Elabore uma solução iterativa simples.
3. Identify inefficiency
Procure cálculos redundantes.
4. Optimize search path
Use hashing ou classificação para acelerar o processo.
5. Final Implementation
Limpe o código para padrões de produção.
Declaração do problema
Você recebe uma matriz de strings tokens que representa uma expressão aritmética em notação polonesa reversa.
Avalie a expressão e retorne um número inteiro que represente o valor da expressão.
Observe que:
- Os operadores válidos são '+', '-', '*' e '/'.
- Cada operando pode ser um número inteiro ou outra expressão.
- A divisão entre dois inteiros sempre trunca em direção a zero.
- Não haverá divisão por zero.
- A entrada representa uma expressão aritmética válida em notação polonesa reversa.
Escreva uma função evalRPN(tokens: List[str]) -> int.
- •1 <= len(tokens) <= 10^4
- •tokens[i] is either an operator (+, -, *, /) or an integer in the range [-200, 200]
Exemplos
tokens = ["2", "1", "+", "3", "*"]
9
((2 + 1) * 3) = 9.
tokens = ["4", "13", "5", "/", "+"]
6
(4 + (13 / 5)) = (4 + 2) = 6. Note 13/5 truncates to 2.
tokens = ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]
22
((10 * (6 / ((9 + 3) * -11))) + 17 + 5) = 22.
Need a Hint?
Edge Cases to Watch
- Estruturas de entrada vazias
- Entradas de elemento único
- Grandes limites numéricos
Pronto para resolver?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Insights e variações da entrevista
Análise de complexidade
Por que tempo: Directly evaluates all possibilities.
Por que espaço: Uses standard local memory.
Por que tempo: Optimized paths reduce total operations.
Por que espaço: May trade memory for speed.
Código Python da solução otimizada
Código Python da solução otimizada
def eval_rpn_opt(tokens):
stack = []
for c in tokens:
if c == "+":
stack.append(stack.pop() + stack.pop())
elif c == "-":
a, b = stack.pop(), stack.pop()
stack.append(b - a)
elif c == "*":
stack.append(stack.pop() * stack.pop())
elif c == "/":
a, b = stack.pop(), stack.pop()
stack.append(int(b / a))
else:
stack.append(int(c))
return stack[0]Código de força bruta (protegido por spoiler)
Código de força bruta (protegido por spoiler)
def eval_rpn_brute(tokens):
stack = []
for t in tokens:
if t in "+-*/":
b = stack.pop()
a = stack.pop()
if t == "+": stack.append(a + b)
elif t == "-": stack.append(a - b)
elif t == "*": stack.append(a * b)
else: stack.append(int(a / b))
else:
stack.append(int(t))
return stack[0]Algorithm Pattern Checklist
When dealing with Stack data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Aplicam-se propriedades de problema de pilha padrão.
Perguntas relacionadas
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Loops Python
Aprenda como usar loops Python para iterar dados. Domine as práticas recomendadas para loops for, while loops, break, continue e loop com exemplos interativos.
Como reverter uma string em Python
Aprenda como reverter uma string em Python usando fatiamento, a função reversed() e concatenação de loop com exemplos de código visual.
Folha de dicas dos métodos de string Python
Um guia de referência completo para manipulação de strings em Python. Domine a formatação, pesquisa, divisão, substituição e verificação de propriedades de string.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.