题目来源:

  https://leetcode.com/problems/evaluate-reverse-polish-notation/


题意分析:

  给定一个数组,用这个数组来表示加减乘除,例如

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

题目思路:

  这里考虑的是栈的使用。如果是数字那么push进栈,如果不是,那么把栈后两个数pop出来,进行相应的操作。要注意的是除法的时候要保证先转化正负一致再进行计算。


代码(python):

class Solution(object):
def evalRPN(self, tokens):
"""
:type tokens: List[str]
:rtype: int
"""
ans = []
for i in tokens:
if i != '/' and i != '*' and i != '+' and i != '-':
ans.append(int(i))
else:
tmp1 = ans.pop()
tmp2 = ans.pop()
if i == '/':
if tmp1*tmp2 < 0:
ans.append(-((-tmp2) // tmp1))
else:
ans.append(tmp2/tmp1)
if i == '*':
ans.append(tmp2*tmp1)
if i == '+':
ans.append(tmp2 + tmp1)
if i == '-':
ans.append(tmp2 - tmp1)
return ans[0]

最新文章

  1. [Machine Learning &amp; Algorithm] 随机森林(Random Forest)
  2. GDB详解
  3. Atitit 控制中心快速启动面板quick launcher
  4. [tem]高精度2
  5. Linux modules install
  6. UBUNTU下Y86模拟器的安装和使用
  7. 【C#】OOP之多态那点事
  8. oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
  9. Android开发中怎样调用系统Email发送邮件(多种调用方式)
  10. Andrew Ng机器学习课程笔记--week7(SVM)
  11. PHP 接口 返回构造函数
  12. Linux中安装字体
  13. Testlink插件工具
  14. Python04(基础语法)
  15. sort 与 sorted 区别
  16. python—第三库的安装方法
  17. js中一次性注册多个事件
  18. Linux touch命令
  19. Python自定义包在linux服务器导入错误的解决办法
  20. (java基础)抽象类加泛型的理解

热门文章

  1. Android之Socket通信(一)
  2. HTML——window.document对象练习题
  3. Android 相对布局常用属性
  4. Oracle EBS-SQL (PO-10):检查过期采购未接收订单.sql
  5. 可以使用QT给龙芯开发软件
  6. Windows下让Git记住用户名密码(https)
  7. git使用三把斧
  8. AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)
  9. 探求C#.Net中ArrayList与Array的区别 【转】
  10. How to set custom JsonSerializerSettings for Json.NET in MVC 4 Web API?