网易首页 > 网易号 > 正文 申请入驻

华为青浦公寓,爽的一批,上班5分钟通勤,中午回来休息 。。。

0
分享至

专栏:50多种数据结构彻底征服

专栏:50多种经典图论算法全部掌握

这段时间,上海青浦华为练秋湖研发中心第一批3000名研发人员已经入驻,预计明年春节前后,大约25000人进驻办公,明年年底,完成约30000人。

华为青浦研发中心也为应届生提供了公寓,公寓有华为智慧屏,松下洗衣机,智能马桶,华为门锁,可以入住两年。从公寓关门到公司打卡五分钟不到的路程,这在上海普遍一个小时的上班时间来说已经非常非常近了。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第150题:逆波兰表达式求值。

问题描述

来源:LeetCode第150题

难度:中等

给你一个字符串数组 tokens ,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。

示例1:


输入:tokens = ["2","1","+","3","*"] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例2:


输入:tokens = ["4","13","5","/","+"] 输出:6 解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

  • 1 <= tokens.length <= 10^4

  • tokens[i] 是一个算符("+"、"-"、"*" 或 "/"),或是在范围 [-200, 200] 内的一个整数

问题分析

我们平时书写的表达式是中缀表达式,运算符在中间,操作数在两边,比如a+b。逆波兰表达式也就是 后缀表达式 ,操作数在前,运算符在后,比如 a b + 。还有一个是前缀表达式,是波兰表达式,运算符在前,操作数在后,比如 + a b 。

对于我们人来说中缀表达式是最容易计算的,但对于计算机来说更容易计算的是前缀表达式和后缀表达式。关于前,中,后三种表达式的相互转换有堆栈法,二叉树法和括号法,具体可以看下 《 中的第十三章。

对于逆波兰表达式的计算我们只需要使用一个栈即可,遍历字符串数组,如果遇到数字就入栈,如果是运算符就从栈中弹出两个数字, 注意先出栈的是右值,后出栈的是左值 ,把它们计算的结果入栈,直到字符串数组遍历完为止。

JAVA:

 public int evalRPN(String[] tokens) {     Stack
           
  stack =  new Stack<>();      int num1, num2;      for (String token : tokens) {          if (isSignal(token)) {              // 如果是运算符,就从栈中连续弹出两个数字。             num1 = stack.pop(); // 右值             num2 = stack.pop(); // 左值              if (token.equals( "+")) { //加法                 stack.push(num2 + num1);             }  else  if (token.equals( "-")) { //减法                 stack.push(num2 - num1);             }  else  if (token.equals( "*")) { //乘法                 stack.push(num2 * num1);             }  else  if (token.equals( "/")) { //除法                 stack.push(num2 / num1);             }         }  else {  // 如果是数字,就把他压入到栈中             stack.push(Integer.parseInt(token));         }     }      // 最后栈中只有一个元素,取出即可      return stack.pop(); } // 判断是否是符号 private boolean isSignal(String token) {      return  "+".equals(token) ||  "-".equals(token)             ||  "*".equals(token) ||  "/".equals(token); }

C++:

public:     int evalRPN(vector

  &tokens) {         stack

  stk;         int num1, num2;         for (string &token: tokens) {             if (isSignal(token)) {                 // 如果是运算符,就从栈中连续弹出两个数字。                 num1 = stk.top();// 右值                 stk.pop();                 num2 = stk.top();// 左值                 stk.pop();                 if (token[0] == '+')//加法                     stk.push(num2 + num1);                 else if (token[0] == '-') {//减法                     stk.push(num2 - num1);                 } else if (token[0] == '*') {//乘法                     stk.push(num2 * num1);                 } else if (token[0] == '/') {//除法                     stk.push(num2 / num1);                 }             } else {// 如果是数字,就把他压入到栈中                 stk.push(stoi(token));             }         }         // 最后栈中只有一个元素,取出即可         return stk.top();     }     // 判断是否是符号     bool isSignal(string &token) {         return "+" == token || "-" == token                || "*" == token || "/" == token;     }


Python:

def evalRPN(self, tokens):     stack = []     for token in tokens:         if token in '+-*/':  # 判断是否是符号             num1 = stack.pop()             num2 = stack.pop()             stack.append(str(int(eval(num2 + token + num1))))         else:             stack.append(token)     return int(stack[0])

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以 下载我整理的1000多页的PDF算法文档 。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
心理学有个残忍发现:越是老实的人,被人算计后越不能靠愤怒或示弱来反击;真正让对方害怕的,是掌握这两种“无声的报复”

心理学有个残忍发现:越是老实的人,被人算计后越不能靠愤怒或示弱来反击;真正让对方害怕的,是掌握这两种“无声的报复”

心理观察局
2026-07-03 07:29:20
哈梅内伊的国葬,他的儿子穆杰塔巴,面临着从政以来最恐怖的抉择

哈梅内伊的国葬,他的儿子穆杰塔巴,面临着从政以来最恐怖的抉择

阿芒娱乐说
2026-07-03 12:27:05
苹果新品官宣:7月4日,正式开售

苹果新品官宣:7月4日,正式开售

科技堡垒
2026-07-02 10:32:36
20 元勾走女教师,10 年睡 1242 个中国女孩:洋垃圾的底气是谁给的?

20 元勾走女教师,10 年睡 1242 个中国女孩:洋垃圾的底气是谁给的?

石辰搞笑日常
2026-06-14 10:25:00
终于有经济学家批评体制内退休金太高、加剧代际矛盾,评论区炸锅

终于有经济学家批评体制内退休金太高、加剧代际矛盾,评论区炸锅

慧翔百科
2026-06-23 08:47:02
被耿同学点名的院士!宋尔卫在线出席顶级论坛:他还好吗?

被耿同学点名的院士!宋尔卫在线出席顶级论坛:他还好吗?

大江看潮
2026-06-30 13:06:24
今起坐飞机有变化!退改阶梯收费、行李尺寸统一,短途餐食改零食

今起坐飞机有变化!退改阶梯收费、行李尺寸统一,短途餐食改零食

原广工业
2026-07-02 04:17:45
林志颖捂了12年的kimi,首次公开正面照,网友:这脸,判若俩人……

林志颖捂了12年的kimi,首次公开正面照,网友:这脸,判若俩人……

可读
2026-06-25 23:21:52
14.38万起售卖爆了!MONA L03打破小鹏所有车型同期小订纪录

14.38万起售卖爆了!MONA L03打破小鹏所有车型同期小订纪录

快科技
2026-07-03 01:02:21
那些在坦克发动机上想走捷径的国家,最后都付出了什么代价?

那些在坦克发动机上想走捷径的国家,最后都付出了什么代价?

阿尢说历史
2026-07-01 14:12:44
渡边雄太:对主场疯狂球迷有预期;希望杨瀚森能长留NBA

渡边雄太:对主场疯狂球迷有预期;希望杨瀚森能长留NBA

懂球帝
2026-07-03 13:30:47
高市早苗临时改变主意,专机绕开印度东北邦,离中国藏南远一点

高市早苗临时改变主意,专机绕开印度东北邦,离中国藏南远一点

爱下厨的阿酾
2026-07-03 12:40:52
后来才明白,电动车充满电后不拔,不是充电,是在给电池“加班”

后来才明白,电动车充满电后不拔,不是充电,是在给电池“加班”

沙雕小琳琳
2026-07-02 19:46:52
进8球0失球!连续34场不败!不是阿根廷,法国最大夺冠劲敌出炉

进8球0失球!连续34场不败!不是阿根廷,法国最大夺冠劲敌出炉

篮球圈里的那些事
2026-07-03 13:29:58
记者:克洛普准备接受德国队主帅职位

记者:克洛普准备接受德国队主帅职位

懂球帝
2026-07-03 12:14:29
生阳气的3种食物,入伏前后多吃,把脾胃养好了,阳气也补足了

生阳气的3种食物,入伏前后多吃,把脾胃养好了,阳气也补足了

阿龙美食记
2026-07-01 13:22:59
詹姆斯离开湖人,为什么感觉所有人都很开心?

詹姆斯离开湖人,为什么感觉所有人都很开心?

鸣哥说体育
2026-07-03 12:05:11
从2026年7月1日起,全国将强制执行退休返聘及超龄员工,好事呀!

从2026年7月1日起,全国将强制执行退休返聘及超龄员工,好事呀!

福建睿平
2026-07-02 07:47:57
135公里刀片网背后,泰山是收门票者的山,还是人民的山?

135公里刀片网背后,泰山是收门票者的山,还是人民的山?

非虚构人间
2026-07-01 20:50:30
捷克CZ600+卡宾枪正式发布 山毛榉枪托 可换口径 突出轻量化设计

捷克CZ600+卡宾枪正式发布 山毛榉枪托 可换口径 突出轻量化设计

hawk26讲武堂
2026-07-02 12:47:41
2026-07-03 14:00:49
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

科技要闻

特斯拉交付超预期7.4万辆,股价却大跌7.5%

头条要闻

齐达内儿子被梅西打穿后一度崩溃 淘汰赛又被灌进2球

头条要闻

齐达内儿子被梅西打穿后一度崩溃 淘汰赛又被灌进2球

体育要闻

韩国人,为什么恨透了洪明甫?

娱乐要闻

黄晓明深夜约会美女,分手原因曝光

财经要闻

AI“鬼故事”不断,市场开始重估?

汽车要闻

极氪9X五座版官宣,如图!

态度原创

本地
艺术
健康
数码
房产

本地新闻

这场穿越酉阳的光影之旅,张张都是壁纸!

艺术要闻

当代画家 张奇人物油画作品选

这4类消化病患者 吃粘食管住嘴

数码要闻

299元双8K旗舰款!雷神X7s Pro Max鼠标预售:全球首发PAW3955 Turbo

房产要闻

稀缺预警!海岸线200米+限墅令下,海南「绝版硬通货」来了!

无障碍浏览 进入关怀版