【LeetCode】150.逆波兰表达式求值
LeetCode 表达式 150 求值 波兰
2023-09-14 09:13:25 时间
1. 题目
2. 分析
python 中的 //
是 向下除法,和本题要求的除法不太一样。本题中
6/(-132)
= 0 ,但如果用Python的话6//(-132)=-1
,导致最后计算错误,于是我单独写了一个判断逻辑,看二者是否是负数,如果是负数,向上取整。
3. 代码
import math
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
# 遍历 tokens 序列
for i in range(len(tokens)):
try:
num = int(tokens[i])
stack.append(num) # 放入到num中
except:
# 弹出两个值,进行计算
nums1,nums2 = stack[-1],stack[-2]
stack.pop() # 弹出
stack.pop()
# print(tokens[i],stack)
cur = None
if tokens[i] == '+':
cur = nums2 + nums1
elif tokens[i] == '-':
cur = nums2 - nums1
elif tokens[i] == '*':
cur = nums1 * nums2
elif tokens[i] == '/':
if nums2 * nums1 < 0:
cur = abs(nums2) // abs(nums1) * (-1)
else:
cur = nums2 // nums1
# print(nums2,nums1,cur)
stack.append(cur)
# print(cur)
return stack[-1]
相关文章
- LeetCode每日一题-6:k个一组翻转链表
- ☆打卡算法☆LeetCode 203. 移除链表元素 算法解析
- 设计循环队列(leetcode 622)
- leetcode-167两数之和(双指针+二分)
- leetcode-2两数相加[通俗易懂]
- JavaScript刷LeetCode贪心算法篇
- LeetCode - #66 加一
- LeetCode-分治
- leetcode 链表初探 21. merge two sorted lists
- 【算法】动态规划 ③ ( LeetCode 62.不同路径 | 问题分析 | 自顶向下的动态规划 | 自底向上的动态规划 )
- 每日一道leetcode:8. 字符串转换整数 (atoi)
- LeetCode每日一题:合并两个有序数组
- C 语言的 LeetCode 30 天挑战 第2部分,共10部分