大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值
文章目录
- 题目描述与示例
- 题目描述
- 输入描述
- 输出描述
- 示例
- 输入
- 输出
- 解题思路
- 代码
- Python
- Java
- C++
- 时空复杂度
- 华为OD算法/大厂面试高频题算法练习冲刺训练
题目描述与示例
题目描述
给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不会有括号),例如7+3*4*5+2+4-3-1,请写程序计算该表达式的结果并输出
输入描述
输入有多行,每行是一个表达式,输入以END作为结束
输出描述
每行表达式的计算结果
示例
输入
7+3*4*5+2+4-3-1
2-3*1
END
输出
69
-1
解题思路
本题属于经典的中缀表达式计算类栈题,但相比起LeetCode上的几道类似题目相对简单。
代码
Python
# 题目:【栈】Bilibili2019秋招-简单表达式求值
# 作者:闭着眼睛学数理化
# 算法:栈
# 代码有看不懂的地方请直接在群上提问# 更新栈的函数
def update_stack(stack, preSign, num):# 如果前一个符号为乘号,则将栈顶元素乘以numif preSign == "*":stack[-1] *= num# 如果前一个符号为减号,则将-num压入栈中elif preSign == "-":stack.append(-num)# 如果前一个符号为加号,则将num压入栈中elif preSign == "+":stack.append(num)return# 表达式求值的核心函数
def cal_res(line):# 初始化一个空栈stack = list()# 初始化上一个遇到的符号preSign为加号preSign = "+"# 初始化遍历过程中遇到的数字num为0num = 0for ch in line:# 遇到数字的情况,更新numif ch.isdigit():num = num * 10 + int(ch)# 遇到符号(+、-或*)的情况else:# 需要根据num和之前的符号preSign更新栈update_stack(stack, preSign, num)# num已经用完,需要重新将其赋值为0num = 0# 此时的ch赋值给preSign,留着下次使用preSign = ch# 最后一个num尚未计算过,故还需再次调用update_stack()函数update_stack(stack, preSign, num)# 对整个栈进行求和,即为最终的计算结果return sum(stack)line = input()
ans = list()
# 反复输入line,直到输入END
while line != "END":ans.append(cal_res(line))line = input()for res in ans:print(res)
Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);List<Long> ans = new ArrayList<>();String line = scanner.nextLine();while (!line.equals("END")) {ans.add(calRes(line));line = scanner.nextLine();}for (long res : ans) {System.out.println(res);}}static long calRes(String line) {List<Long> stack = new ArrayList<>();char preSign = '+';long num = 0;for (char ch : line.toCharArray()) {if (Character.isDigit(ch)) {num = num * 10 + Character.getNumericValue(ch);} else {updateStack(stack, preSign, num);num = 0;preSign = ch;}}updateStack(stack, preSign, num);long result = 0;for (long numInStack : stack) {result += numInStack;}return result;}static void updateStack(List<Long> stack, char preSign, long num) {if (preSign == '*') {stack.set(stack.size() - 1, stack.get(stack.size() - 1) * num);} else if (preSign == '-') {stack.add(-num);} else if (preSign == '+') {stack.add(num);}}
}
C++
#include <iostream>
#include <vector>using namespace std;void updateStack(vector<long long> &stack, char preSign, long long num) {if (preSign == '*') {stack.back() *= num;} else if (preSign == '-') {stack.push_back(-num);} else if (preSign == '+') {stack.push_back(num);}
}long long calRes(string line) {vector<long long> stack;char preSign = '+';long long num = 0;for (char ch : line) {if (isdigit(ch)) {num = num * 10 + (ch - '0');} else {updateStack(stack, preSign, num);num = 0;preSign = ch;}}updateStack(stack, preSign, num);long long result = 0;for (long long numInStack : stack) {result += numInStack;}return result;
}int main() {vector<long long> ans;string line;while (true) {getline(cin, line);if (line == "END") {break;}ans.push_back(calRes(line));}for (long long res : ans) {cout << res << endl;}return 0;
}
时空复杂度
时间复杂度:O(Nt)。字符串line中的每一个元素仅需遍历一次。t为询问次数。
空间复杂度:O(N)。栈所占空间。
华为OD算法/大厂面试高频题算法练习冲刺训练
-
华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!
-
课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化
-
每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!
-
60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁
-
可上全网独家的欧弟OJ系统练习华子OD、大厂真题
-
可查看链接 大厂真题汇总 & OD真题汇总(持续更新)
-
绿色聊天软件戳
od1336了解更多
相关文章:
大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值
文章目录 题目描述与示例题目描述输入描述输出描述示例输入输出 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不…...
(一)RISC-V 指令集及寄存器介绍
1. RISC-V指令集介绍 RISC-V 念作 “risk-five”,代表着 Berkeley 所研发的第五代精简指令集。 该项目 2010 年始于加州大学伯克利(Berkeley)分校,希望选择一款 ISA用于科研和教学。经过前期多年的研究和选型,最终决定…...
二十三种设计模式:解密职责链模式-购物优惠活动的设计艺术
在购物领域,为了吸引和激励消费者,商家常常会推出各种优惠活动,比如满减、打折、赠品等。然而,这些优惠活动的处理逻辑通常较为复杂,需要根据购物订单的条件进行判断和处理。本文将深入探讨职责链模式的实现方式&#…...
竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉
文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…...
unexpected end of stream on
SpringCloud使用FeignClient调用第三方接口报错unexpected end of stream on ; 解决方法: 1.检查服务器端口是否被占用 lsof -i:端口; 2.nacos添加超时配置:...
【微信小程序篇】- 组件
最近自己在尝试使用AIGC写一个小程序,页面、样式、包括交互函数AIGC都能够帮我完成(不过这里有一点问题AIGC的上下文关联性还是有限制,会经常出现对于需求理解跑偏情况,需要不断的重复强调,并纠正错误,才能得到你想要的…...
使用Sqoop命令从Oracle同步数据到Hive,修复数据乱码 %0A的问题
一、创建一张Hive测试表 create table test_oracle_hive(id_code string,phone_code string,status string,create_time string ) partitioned by(partition_date string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ,; 创建分区字段partition_date,…...
NC Cloud uploadChunk文件上传漏洞复现
简介 NC Cloud是指用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。该产品uploadChunk文件存在任意文件上传漏洞。 漏洞复现 FOFA语法: app"用友-NC-Cloud" 访问页面如下所示: POC:/ncchr/pm/fb/…...
多标签页之间的通信
解决方案有两种思路:浏览器端解决方案、服务器端解决方案。 一、浏览器端解决方案: 思路:本地数据存储 <!-- index01.html --> <input id"name"> <input type"button" id"btn" value"…...
CI/CD -gitlab
目录 一、常用命令 二、部署 一、常用命令 官网:https://about.gitlab.com/install/ gitlab-ctl start # 启动所有 gitlab 组件 gitlab-ctl stop # 停止所有 gitlab 组件 gitlab-ctl restart # 重启所有 gitlab 组件 gitlab-ctl statu…...
AR眼镜_单目光波导VS双目光波导方案
双目光波导AR眼镜方案是一种创新的智能设备,可以在现实场景中叠加虚拟信息,提供增强的视觉体验和交互体验。光学显示方案是AR眼镜的核心技术之一,它对眼镜的性能和使用体验起着决定性的作用。 相比于单目AR眼镜,双目AR眼镜具有更好…...
golang 动态库 (buildmode)
目录 1. golang 动态库2. Golang 生成 C 动态库 .so 和静态库 .a2.1. 源代码2.2. 编译2.3. C2.4. 执行2.5. 如何生成静态库2.6. Go 调用 C 库2.6.1. 源代码 3. golang 语言使用动态库、调用动态链接库3.1. Go 插件系统3.2. 动态加载的优劣3.3. Go 的插件系统: Plugin3.4. 插件开…...
【mysql】2006 - Server has gone away
执行了一组插入语句 提示:2006 - Server has gone away; 2006-服务器已经消失; 消失去哪里了,被黑洞吞没了吗?!!! 网络问题 网络不稳定?断网了?检查网络连…...
动态规划43(Leetcode91解码方法)
代码: class Solution {public int numDecodings(String s) {int n s.length();if(s.charAt(0)0)return 0;if(n1)return 1;int[] dp new int[n1];dp[0]1;dp[1]1;for(int i2;i<n;i){if(s.charAt(i-2)1){dp[i]dp[i-2];}else if(s.charAt(i-2)2&&s.charA…...
STM32电源名词解析
先来简单了解一下各种电源端口的命名 VCC:Ccircuit 表示电路的意思, 即接入电路的电压 VDD:Ddevice 表示器件的意思, 即器件内部的工作电压。 VSS:Sseries 表示公共连接的意思,通常指电路公共接地端电压。 GND:在电…...
openAI宫斗感想 chatGPT带给客户巨大利益的就是王者。王者终究会归来。技术人员不要总是想掌握所有核心技术并用到极致。
1.我很喜欢乔布斯用的iCEO,每个人的工作都是临时的,打掉铁饭碗才会有效率。有铁饭碗就容易使人怠慢、傲慢、嚣张、低效率的消耗自己和别人的生命。日本人为什么对每个人每个客户都毕恭毕敬,感觉因为他的饭碗都掌握在周围的人手里。 日本文化…...
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
参考:https://www.cnblogs.com/sam-snow-v/p/15917898.html eclipse链接SQL Server出现问题 笔者使用Open JDK 17,SQL Server 2016,项目中使用JPA操作数据库。测试环境没问题,生产环境出现如题所示“驱动程序无法通过使用安全套接…...
性能调优第一步:服务器硬件如何选型
硬件选型是调优的第一步,无论你是自行购买服务器进行托管,还是租用服务器,或者购买云主机,都要面临的一个问题,那就是选择服务器的硬件配置,因为没有一台服务器能满足所有需求,解决所有的问题。…...
Codewhisperer 使用评价
最近亚⻢逊推出了一款基于机器学习的 AI 编程助手 Amazon CodeWhisperer,可以实时提供代码建议。在编写代码时,它会自动根据现有的代码和注释给出建议。Amazon CodeWhisperer 与GitHub Copilot类似,主要的功能有: 代码补全注释和文档补全代码…...
结合scss实现黑白主题切换
是看了袁老师的视频后,自己做了一下练习。原视频地址: b站地址https://www.bilibili.com/video/BV15z4y1N7jB/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcec6cf63302f28d94ebc02cbedcecc57ea首先创建一个全局的scs…...
RD-VLA:机器人动态思考的潜在空间迭代推理架构
1. 项目概述:为什么我们需要一个会“思考”的机器人模型?在机器人控制领域,我们一直梦想着能造出一个像人一样“聪明”的助手:让它去拿杯水,它能轻松完成;让它在一个杂乱无章的抽屉里找出并组装一个小零件&…...
别再乱码了!一文搞懂Windows记事本里ANSI、GBK、SJIS这些编码到底怎么选
告别乱码!Windows记事本编码选择终极指南 为什么你的文件总在别人电脑上显示乱码? 每次用Windows记事本保存文件时,面对"ANSI"、"Unicode"、"UTF-8"这些选项,你是否感到困惑?明明在自己…...
对比Token Plan与按量计费,如何为你的项目选择更经济的消费模式
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比Token Plan与按量计费,如何为你的项目选择更经济的消费模式 对于使用大模型API的开发者而言,成本控制是…...
投影仪的分辨率不高,仅为1024*768的分辨率,而笔记本电脑2560×1600(2.5K)分辨率。——如果采用扩展屏复制笔记本电脑分辨率,发现那个投影仪投影出的字很小,且看不清。 将笔记本电脑的
投影仪的分辨率不高,仅为1024*768的分辨率,而笔记本电脑25601600(2.5K)分辨率。——如果采用扩展屏复制笔记本电脑分辨率,发现那个投影仪投影出的字很小,且看不清。 将笔记本电脑的分辨率也改为1024*768的分辨率,投影仪字体大小会放大才看的清楚,但是软件无法全部显…...
LoRA 部署:微调后的模型怎么上线
本文基于昇腾CANN和昇腾NPU,围绕 cann-recipes-infer 仓库的相关技术展开。 LoRA 训练完出来两个东西——基础模型权重不动,外加一个小 rank 矩阵。部署时你不能直接丢原始权重,LoRA 矩阵要合并进去或者通过算子注入。CANN 上 LoRA 部署有两种…...
GPU 池化5个真实场景告诉你,为什么需要 OrionX 社区版
算力不够、卡太贵、利用率低、环境配置烦——这些话题在 AI 圈子里已经聊了无数遍。但问题始终在那里。 现在,趋动科技正式推出永久免费的 OrionX AI 算力池化软件社区版,把 GPU 池化能力免费开放给所有人。 下面是五个全新的真实场景,看看…...
市面上有哪些是真正性价比高的降AIGC软件(轻松压低AI生成疑似率)
最崩溃的不是查重难题,而是查重达标却AI率超标亮红灯!很多工具只会简单同义词替换、浅层改字,根本洗不掉AI专属句式、行文逻辑和高频模板话术,学校AIGC检测一查一个准,论文直接翻车。 本篇结合全网实测数据,…...
有哪些AI论文软件是真的适配学科专业,而不是模板套话?
在 AI 写作技术迅猛发展的今天,各类论文工具层出不穷,看似能快速完成写作任务,实则多数是内容空洞、逻辑混乱、格式随意的“模板复制器”,生成的文章缺乏专业深度,充斥着机械化的表达方式。真正具备学术价值的 AI 论文…...
FlashAttention 在昇腾NPU上的极致优化
刚接触 FlashAttention 那会,我被一个困惑砸懵了:明明 Attention 机制的计算量已经是 O(n) 了,业界还在拼命优化它,图什么? 直到我看见一组数据才明白——训练一个 1750 亿参数的 GPT-3,光是 Attention 计…...
【2026年华为暑期实习-非AI方向(通软嵌软测试算法数据科学)- 5月22日-第二题- 建筑物的安全视野】(题目+思路+JavaC++Python解析+在线测试)
题目内容 在城市规划中,建筑师需要分析建筑物之间的视野关系。给出一条街道上的一排建筑物,每个建筑物有一定的高度。对于每个建筑物,我们定义一个安全视野距离:从该建筑物向右看,能看到的建筑物的数量。 一个建筑物 AAA 能够看到另一个建筑物 BBB 的条件是: BB...
