【2023秋招】华为od-4.14三道题思路题解

news2024/10/6 0:28:57

2023大厂笔试模拟练习网站(含题解)

www.codefun2000.com
最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。
在这里插入图片描述

今天带来的是4.14华为od春招的三道题目。最近有很多热爱刷题的小伙伴主动地将自己的做题过程与思路录制成视频分享在B站,欢迎大家前去学习支持!视频链接:https://space.bilibili.com/298539770

每道题目附有思路提示,对应的题解(各种语言)欢迎前往www.codefun2000.com查看。

第一题

题目内容

有一个特异性的双端队列,该队列可以从头部或尾部添加数据但息只能从头部移出数据。塔子哥依次执行 2 × n 2\times n 2×n 个指令往队列中添加数据和移出数据。

其中 n n n 个指令是添加数据(可能从头部添加、也可能从尾部添加),依次添加 1 1 1 n n n

还有 n n n 个指令是移出数据。现在要求移除数据的顺序为 1 1 1 n n n

为了满足最后输出的要求,塔子哥可以在任何时候调整队列中数据的顺序。

请问塔子哥最少需要调整几次才能够满足移除数据的顺序正好是 1 1 1 n n n

输入描述

第一行一个整数 n n n ,表示数据范围。

接下来有 2 × n 2\times n 2×n 行,其中有 n n n 行为添加数据:指令 head add x 表示从头部添加数据 x x xtail add x 表示从尾部添加数据 x x x

另外 n n n 行为移出数据指令,指令为 remove 的形式,表示移出 1 1 1 个数据;

1 ≤ n ≤ 3 × 1 0 5 1\le n\le 3\times 10^5 1n3×105

所有的数据均合法。

注意:输入会保证按照1到n的顺序加入队列,确保输出时对应的的数据已经在队列中

输出描述

一个整数,表示塔子哥要调整的最小次数。

样例

输入

3
head add 1
remove
tail add 2
head add 3
remove
remove

输出

1

样例解释

输入命令队列
head add 11
remove
tail add 22
head add 33 2
remove2 3(调整一次)
3
remove

上述表格展示了所给用例的执行过程。

其中,第一次remove不需要调整,可以直接满足输出要求;

第二次remove命令执行时,需要调整队列中元素的位置,将2调整到最前面才可以满足输出的要求。

这个调整可以任何时候进行,可以调移成任何顺序。

思路:思维题,注意理解题意

第二题

题目内容

阿华的网上商城举办优惠活动,发布了满减、打折、无门槛三种优惠券,分别为:

  1. 每满 100 100 100 元优惠 10 10 10 元,无使用数限制,如 100 − 199 100-199 100199 元可以使用 1 1 1 张减 10 10 10 元, 200 − 299 200-299 200299 可使用 2 2 2 张减 20 20 20 元,以此类推;
  2. 92 92 92 折券, 1 1 1 次限使用 1 1 1 张,如 100 100 100 元,则优惠后为 92 92 92 元;
  3. 无门槛 5 5 5 元优惠券,无使用数限制,直接减 5 5 5 元。

每次最多使用 2 2 2 种优惠券, 2 2 2 种优惠可以叠加 (优惠叠加时以优惠后的价格计算),以购物 200 200 200 元为例,可以先用 92 92 92 折券优惠到 184 184 184 元,再用 1 1 1 张满减券优惠 10 10 10 元,最终价格是 174 174 174 元,也可以用满减券 2 2 2 张优惠 20 20 20 元为 180 180 180 元,再使用 92 92 92 折券优惠到 165 165 165 ( 165.6 165.6 165.6 向下取整)元,不同使用顺序的优惠价格不同,以最优惠价格为准。在一次购物中,同一类型优惠券使用多张时必须一次性使用,不能分多次拆开穿插使用 (不允许先使用 1 1 1 张满减券,再用打折券,再使用一张满减券) 。

现在请你设计实现一种解决方法,帮助购物者以最少的优惠券获得最优的优惠价格。优惠后价格越低越好,同等优惠价格,使用的优惠券越少越好,可以允许某次购物不使用优惠券。

优惠活动每人只能参加一次,每个人的优惠券种类和数量是一样的。

输入描述

第一行:三个整数 n u m 1 , n u m 2 , n u m 3 num1,num2,num3 num1,num2,num3 ,表示每个人拥有的每种优惠券的数量,按满减、打折、无门槛的顺序输入。( 1 ≤ n u m 1 , n u m 2 , n u m 3 ≤ 10 1\le num1,num2,num3\le 10 1num1,num2,num310

第二行:一个整数 n n n ,表示购物的人数。( 1 ≤ n ≤ 10000 1 \le n \le 10000 1n10000 )

最后 n n n 行:每一行一个整数 p r i c e price price ,表示某个人优惠前的购物总价格。( 1 ≤ p r i c e ≤ 1000 1\le price \le 1000 1price1000

输入都是符合题目设定的要求的。

输出描述

每行输出每个人每次购物优惠后的最低价格以及使用的优惠券总教量,每行的输出顺序和输入的顺序保持一致。

样例

输入

3 2 5
3
100
200
400

输出

65 6
155 7
338 4

样例解释

输入 3 3 3 个人,输出 3 3 3 行结果,同输入的顺序,对应每个人的优惠结果,如下:

第一行,先使用 1 1 1张满减券优惠到 90 90 90 元,再使用 5 5 5 张无门槛券优惠 25 25 25 元,最终价格是 65 65 65 元,总共使用 6 6 6 张优惠券;

第二行,先使用 2 2 2 张满减券优惠到 180 180 180 元,再使用 5 5 5 张无门槛券优惠 25 25 25 元,最终价格是 155 155 155 元,总共使用 7 7 7 张优惠券;

第三行,先使用 1 1 1 92 92 92 折券优惠到 368 368 368 元,再使用 3 3 3 张满减券优惠 30 30 30 元,最终价格是 338 338 338 元,总共使用 4 4 4 张优惠券。

第三题

题目内容

有一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现 2 2 2 次,超过的需要进行删除,删除某个重复的数字后,其它数字相对位置保持不变。

现在想请你帮忙得到经过删除操作后的最大的数值,以字符串表示。

输入描述

第一行为一个纯数字组成的字符串 s t r str str 。( 1 ≤ s t r . l e n g t h ( ) ≤ 100000 1\le str.length() \le 100000 1str.length()100000

输出描述

输出经过删除操作后的最大的数值。

样例

样例1

输入

34533

输出

4533

样例2

输入

5445795045

输出

5479504
思路:单调栈+哈希表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go Etcd 分布式锁实战

1 分布式锁概述 谈到分布式锁,必然是因为单机锁无法满足要求,在现阶段微服务多实例部署的情况下,单机语言级别的锁,无法满足并发互斥资源的安全访问。常见的单机锁如Java的jvm锁Lock、synchronized,golang的Mutex等 对…

mysql8之前如何实现row_number() over(partition by xxx order by xxx asc/desc)

文章目录 背景问题分析难点解决方案:总结公式多字段作为分组如何处理 背景 最近笔者在进行对广告业务的数据统计时遇到这种情况,业务方嫌弃离线数仓太慢,又无需太高的实时性本该使用即席查询的OLAP去做,但是当前公司调研的OLAP还…

Unity 2022 版本 寻路 NavMesh

首先装包 先给地图 和 阻挡 设置为静态 然后给地上行走的地方 添加组件 可以直接bake 然后会显示蓝色的可行走路径 player 添加插件 然后给角色添加脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMove : Mon…

SpringBoot自动配置底层源码解析

1,配置分类 对于一个Spring项目,主要就是有两种配置 一种是类似端口号、数据库地址、用户名密码等一种是各种Bean,比如整合Mybatis需要配置的MapperFactoryBean,比如整合事务需要配置DataSourceTransactionManager SpringBoot中…

Github copilot几个使用技巧,自动补全代码

一、常用快捷键 快捷键含义tab应用提示代码esc拒绝提示代码ctrlenter打开提示面板选用10个意见代码中的一个Alt]切换建议代码Alt ->逐个应用代码 这些快捷键其实就是红色框的功能,也可以通过鼠标点击操作 下面具体介绍一下常用的三个功能: 1. tab自…

Maven——Maven仓库

1.概念 2.远程仓库 3.本地仓库 4.仓库配置和JDK配置 配置远程仓库&#xff1a; <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/publ…

EAI(Enterprise Application Integration,企业应用集成)

目录 1.表示集成&#xff08;界面集成&#xff0c;iframe&#xff09; 2.数据集成&#xff08;中间件&#xff0c;数据库上面一层&#xff09; 3.控制集成&#xff08;API&#xff09; 4.业务流程集成 5.企业之间的应用集成 ​最后推荐一个图片转文字网站 最后推荐一个抖音去…

PowerShell if 使用参考

if 参考 与许多其他语言一样&#xff0c;PowerShell 提供了用于在脚本中有条件地执行代码的语句。 其中一个语句是 If 语句。 今天&#xff0c;我们将深入探讨 PowerShell 中最基本的命令之一。 Powershell 下载&#xff0c;参考 PowershellPowershell 相关文档&#xff0c;…

常用在线工具,非常实用,快收藏起来!

作者丨黑蛋 今天给大家介绍一些常用到的在线工具&#xff0c;能方便我们的日常学习&#xff1a; 编码工具&#xff1a; AES加密解密&#xff1a;http://www.jsons.cn/aesencrypt/ DNA编码解码&#xff1a;https://web.expasy.org/translate/ 双16进制编码解码&#xff1a;ht…

素材发布资源下载 OSS存储+用户组打折+下载限速 V1.1.3(one_market)

插件简介 插件用于各类 资源下载站、数字产品下载站、作品模型下载网站、数字市场网站 等 所有插件都使用管理控制台进行管理,方便后续的统一管理。 管理操作使用AJAX交互,站长管理更加高效快捷。让站长体验更加方便、快捷、高效的管理操作 插件管理功能 全局设置 [基本设置]…

[AI图片生成]自己搭建StableDiffusion安装过程

前言 最近尝试玩玩AI图片生成,安装一路坑 出个一路安装成功的记录 开始 找个空间大的盘符,这玩意将来会很占空间.一个模型大约5g左右,你可能还会装很多模型创建个目录,路径不要有中文安装git 下载地址 详细教程 (如果有忽略)下载 Python3.10.0,记得勾选添加到环境变量选项,安…

看板管理解析:如何通过看板提升项目管理效率?

在目前市面上的项目管理工具中&#xff0c;项目看板功能基本上成为了标配。看板作为敏捷的项目管理工具&#xff0c;可以帮助我们将项目工作可视化展现。 项目看板的作用 1&#xff0c;提高团队信息流动性&#xff1a;看板工具可以及时的传递项目工作中的最新讯息&#xff0c;保…

CC++动态内存管理

C&C动态内存管理 C语言动态内存管理 关于C语言动态内存管理实际上就三个函数malloc和calloc以及realloc&#xff0c;更多的是去理解&#xff0c;用C语言去实现数据结构阶段如果细心你就会可以发现&#xff0c;所有的数据结构都是使用动态内存管理的方式&#xff0c;在堆区…

什么是自然语言处理的文本分析?

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是一种人工智能技术&#xff0c;旨在使计算机能够理解、解释和生成自然语言。文本分析是NLP的一个重要领域&#xff0c;它涉及到从文本数据中提取有用信息的过程。本文将详细介绍自然语言处理的…

如何压缩pdf文件的大小?四种方法值得收藏

如何压缩pdf文件的大小&#xff1f;实际上&#xff0c;压缩PDF文件的主要原因是为了减小文件的大小以便于存储、传输和分享。通常情况下&#xff0c;PDF文件包含大量的图像、文本和其他媒体元素&#xff0c;因此它们的文件大小可能会非常大。如果您需要通过电子邮件或网络共享P…

Qt- QSS样式表用法及用例说明

这里写自定义目录标题 QSS样式表用法1.Qt样式表语法2.选择器3.属性列表4.冲突解决5.全局添加QSS QSS样式表用法 整理qss样式表语法知识&#xff0c;方便今后查看。 1.Qt样式表语法 Qt样式表支持各种属性、伪状态和子控件&#xff0c;可以自定义小部件的外观 selector { attr…

这篇文章教你截图怎么翻译

在我们日常生活和工作中&#xff0c;可能会遇到一些需要翻译的文字内容&#xff0c;例如外语文件、国外的路标等。此时&#xff0c;我们也可以选择手动输入这些文字进行翻译&#xff0c;但是这样不仅费时费力&#xff0c;还容易出现翻译错误的情况。相比之下&#xff0c;我认为…

基于三维数字地球的智慧水利防洪数字沙盘解决方案,助力水利工程数字化升级

简介&#xff1a; 水利防洪电子沙盘主要是基于三维 GIS 平台&#xff0c;采用遥感&#xff08;RS&#xff09;、地理信息系统&#xff08;GIS&#xff09;、虚拟现实&#xff08;VR&#xff09;等技术&#xff0c;在三维电子沙盘场景建设的基础上&#xff0c;加入基础地理信息…

腾讯天幕:荣获首届“IPv6技术应用创新大赛”全国总决赛优秀奖

近日&#xff0c;首届“IPv6技术应用创新大赛”全国总决赛圆满落下帷幕。经过层层选拔、激烈角逐&#xff0c;腾讯参赛项目“IPv6时代下的腾讯天幕安全算力算法PaaS”凭借旁路部署、高阻断率、海量流量实时监控及处理、大数据实时处理分析、联动开放等核心优势&#xff0c;从15…

Java面试知识点(全)- Java并发-多线程JUC二-原子类/锁

Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 JUC原子类 什么是CAS CAS的全称为Compare-And-Swap&#xff0c;直译就是对比交换。是一条CPU的原子指令&#xff0c;其作用是让CPU先进行比较两个值…