华为OD机试真题题库 Java Python C++ JS
最新的华为OD机考算法题(旧题库已经不考,不必刷了)每篇解析包含详细的算法考点解,每天实时更新,不定时在线答疑。
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
AlgorithmHero
这个作者很懒,什么都没留下…
展开
-
2024华为OD机试题库【A卷+B卷+C卷+D卷】(JAVA、Python、C++、JS)
1:进入机考网页之后,如果链接上写着【2023.Q1 A卷】,就表示是2023年的Q1题库(4:订阅专栏后,后面更新的答案都可以查看。以后更新的题目也会放到这个专栏里。,如果时间紧迫,建议直接刷2023年新题。5:如果对题解有问题,私信我解答。2:2022年的题库。原创 2023-05-19 11:59:21 · 12968 阅读 · 7 评论 -
华为OD机试真题-优雅子数组(C++ Java Python)
子数组是数组中一个或多个连续元素组成的数组。,因为其中出现次数最多的元素是1和2,只出现了2次 ( 2 小于 3,因此不满足。给定一个数组A和k,请求出A有多少子数组是k-优雅子数组。第一行输入两个数字,以空格隔开,含义是: A数组长度 k值。:元素 2 出现次数最多,它重复出现 2 次。:元素 2 出现次数最多,它重复出现 2 次。:元素 2 出现次数最多,它重复出现 2 次。向右遍历的过程中,将当前元素加入哈希表并更新出现次数。出现次数最多,它重复出现 2 次。综上所述,在[ 1 ,2, 2, 3]原创 2023-05-18 11:22:47 · 1018 阅读 · 0 评论 -
华为OD机试真题-最大利润【C++ Java Python】
如果你读不懂上述例子,我们可以这么理解:第 0 天买, 第 1 天卖;第 1 天再买,第 2 天卖;第 2 天再买, 第 3 天卖;第 0 天买入,第 3 天卖出?你可以自己计算一下,两种做法是不是最终的收益是一样的。当然可以按照你的想法交易,但是我们的策略是不是。商人经营一家店铺,有number 种商品,,就在昨天买,然后在今天卖。的买卖策略之后,多件商品的买卖策略。1 2 3 第一件商品每天的价格。4 3 2 第二件商品每天的价格。1 5 3 第三件商品每天的价格。然后遍历每件商品,计算利润。原创 2023-05-18 11:11:42 · 653 阅读 · 0 评论 -
华为OD机试 Java【求满足条件的最长子串的长度】
解题思路是通过滑动窗口法遍历字符串,同时维护当前窗口中的字母数量。首先检查字符串是否全是字母或全是数字,若是则直接返回 -1。然后用指针维护窗口边界,当窗口内字母数量超过一个时收缩左边界,确保每次窗口内只有一个字母。每次调整窗口后检查并更新满足条件的最长子串长度,最终返回结果。如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。1、 只包含1个字母(a-z, A~Z),其余必须是数字;2、 字母可以在子串中的任意位置;字符串(只包含字母和数字)原创 2024-05-21 08:38:22 · 41 阅读 · 0 评论 -
华为OD机试 Java 【时间调度】
为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。这个问题的解决思路是首先根据航空公司的缩写进行排序,然后再按照航班号的后4位数字进行排序。A市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。航班号为6为长度,后4位位纯数字,不考虑存在后4位重复的场景。原创 2024-05-17 08:34:23 · 7 阅读 · 0 评论 -
华为OD机试 C++【时间调度】
为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。这个问题的解决思路是首先根据航空公司的缩写进行排序,然后再按照航班号的后4位数字进行排序。A市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。航班号为6为长度,后4位位纯数字,不考虑存在后4位重复的场景。原创 2024-05-17 08:33:21 · 7 阅读 · 0 评论 -
华为OD机试 c++【数组处理】
将输入的乱序数组转换为整数数组,并使用 Map 统计每个元素的出现次数。然后对元素进行排序,按照出现次数从高到低排序,如果出现次数相同,则按照元素值的先后顺序排序。最后将排序后的结果输出。给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。原创 2024-05-13 08:36:05 · 8 阅读 · 0 评论 -
华为OD机试 Java【数组去重和排序】
将输入的乱序数组转换为整数数组,并使用 Map 统计每个元素的出现次数。然后对元素进行排序,按照出现次数从高到低排序,如果出现次数相同,则按照元素值的先后顺序排序。最后将排序后的结果输出。给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。原创 2024-05-09 08:36:23 · 80 阅读 · 0 评论 -
华为OD机试 Python【求字符串中所有整数的最小和】
遍历输入字符串的字符数组,检查每个字符是否是数字字符。如果是数字字符,则将其添加到总和中,否则检查是否是负号,如果是,则将后续数字字符转换为负数并从总和中减去。2)负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023。1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102。输入字符串s,输出s中包含所有整数的最小和。字符串s,只包含 a-z A-Z ±;原创 2024-05-08 08:36:10 · 12 阅读 · 0 评论 -
华为OD机试 C++【测试用例执行计划】
读取特性数量、测试用例数量、特性的优先级和测试用例的覆盖特性列表。第一行输入为 N 和 M,N 表示特性的数量,0 < N ≤ 100,M 表示测试用例的数量,0 < M ≤ 100,之后 N 行表示特性 ID=1 到特性 ID=N 的优先级,再接下来 M 行表示测试用例 ID=1 到测试用例 ID=M 关联的特性的 ID 的列表。,TM),每个测试用例对应一个覆盖特性的集合,测试用例使用其 ID 作为下标进行标识,测试用例的优先级定义为其覆盖的特性的优先级之和。测试用例覆盖的 ID 不重复。原创 2024-05-07 08:44:46 · 11 阅读 · 0 评论 -
华为OD机试 Python【灰度图存储】
从第三个数开始,每两个数一组,每组第一个数是灰阶值,第二个数表示该灰阶值从左到右,从上到下(可理解为二维数组按行存储在一维矩阵中)的连续像素个数。黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰色阶段值,256阶灰图是一个灰阶值取值范围为 0~255 的灰阶矩阵,0表示全黑,255表示全白,范围内的其他值表示不同的灰度。通过遍历压缩数据,在解压缩时直接按照像素位置逐个填充灰度值到一维数组中,然后根据输入的像素位置计算出一维数组中对应的索引,并输出该位置上的灰度值,以此避免可能导致数组越界的情况。原创 2024-05-06 08:47:48 · 17 阅读 · 0 评论 -
华为OD机试 C++【会议室占用的时间】
首先按照会议开始时间对会议进行排序,然后通过遍历排序后的会议时间段,合并重叠的会议时间段,最后输出合并后的会议时间段。之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间。输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束。第一行输入一个整数 n,表示会议数量。会议1开始时间, 会议1结束时间。会议2开始时间, 会议2结束时间。请计算会议室占用时间段。原创 2024-04-29 08:34:36 · 12 阅读 · 0 评论 -
华为OD机试 Java 【会议室占用时间】
首先按照会议开始时间对会议进行排序,然后通过遍历排序后的会议时间段,合并重叠的会议时间段,最后输出合并后的会议时间段。之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间。输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束。第一行输入一个整数 n,表示会议数量。会议1开始时间, 会议1结束时间。会议2开始时间, 会议2结束时间。请计算会议室占用时间段。原创 2024-04-26 09:23:48 · 113 阅读 · 0 评论 -
华为OD机试 C++ 【手机App防沉迷系统】
通过遍历注册的App信息,并根据查询时间点判断每个App是否在使用,如果在使用则比较其优先级,选择优先级最高的App名称打印出来。请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点使用的App名称,如果该时间点没有注册任何App,请返回字符串“NA”。“手机App防沉迷系统”能够让我们每天合理地规划手机App使用时间,在正确的时间做正确的事。最后一行输入一个时间点,程序即返回该时间点使用的App。输出一个字符串,表示App名称,或NA表示空闲时间。请计算会议室占用时间段。原创 2024-04-25 08:33:13 · 29 阅读 · 0 评论 -
华为OD机试 Python【多段线数据压缩】
我们需要判断一个点是否为拐点,检查三个相邻的点A、B、C,如果点B的运动方向与前后两个点A、C的运动方向不一致,则点B是一个拐点。但可以发现,这种表示不是最简的,其实只需要存储6个蓝色的关键点即可,它们是线段的起点、拐点、终点,而剩下4个点是冗余的。上图中的多线段可以用下面的坐标串表示:(1,1),(2,2),(3,3),(4,4),(4,5),(4,6)。所有数字以空格分隔,每两个数字一组,第一个数字是行号,第二个数字是列号;现在,请根据输入的包含有冗余数据的多线段坐标列表,输出其最简化的结果。原创 2024-04-22 08:34:22 · 36 阅读 · 0 评论 -
华为OD机试 Python【机场航班调度】
为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。这个问题的解决思路是首先根据航空公司的缩写进行排序,然后再按照航班号的后4位数字进行排序。A市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。航班号为6为长度,后4位位纯数字,不考虑存在后4位重复的场景。原创 2024-04-19 08:37:44 · 37 阅读 · 0 评论 -
华为OD机试 C++【攀登者】
例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,10,11,12,13,最高峰高度分别为 4,3。用户输入一个表示地图高度的整型数组。然后遍历该数组,检查每个位置是否比其相邻的两个位置都高,如果是,则将其计数为一个山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。输出地图中山峰的数量。原创 2024-04-18 08:31:46 · 24 阅读 · 0 评论 -
华为OD机试 C++【执行任务赚积分】
遍历任务数组,按照截止时间逐个处理任务,如果当前时间小于任务的截止时间,则执行该任务并更新积分。如果当前时间大于等于任务的截止时间,则从已执行任务中选择积分最小的任务替换掉,以获取更高的积分。接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。输出可获得的最多积分。原创 2024-04-15 08:32:55 · 19 阅读 · 0 评论 -
华为OD机试 Java 【执行任务赚积分】
遍历任务数组,按照截止时间逐个处理任务,如果当前时间小于任务的截止时间,则执行该任务并更新积分。如果当前时间大于等于任务的截止时间,则从已执行任务中选择积分最小的任务替换掉,以获取更高的积分。接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。输出可获得的最多积分。原创 2024-04-15 08:32:20 · 54 阅读 · 0 评论 -
华为OD机试 C++【最多购买宝石】
题目橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i](0 ≤ i < n,n = gems.length)宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],…,gems[i+m-1](0 ≤ i < n,m ≤ n)假设你当前拥有总面值为 value 的钱,请问最多能购买到多少个宝石,如无法购买宝石,则返回0。输入描述第一行输入n,参数类型为int,原创 2024-04-07 08:37:41 · 28 阅读 · 0 评论 -
华为OD机试 Python【小明的幸运数】
遍历每个指令,首先小明站在原点,其坐标值为0。在每一步移动后,更新当前坐标值,并将其与之前的最大坐标值进行比较,从而找到游戏过程中的最大坐标值。给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指令前进指定步数或者后退指定步数。第三行输入n个指令,每个指令的取值范围为:-100 ≤ 指令值 ≤ 100。幸运数为一个整数,如果某个指令正好和幸运数相等,则小明行进步数+1。指令为3,正好和幸运数相等,前进3+1=4步;指令为0,表示原地不动,既不前进,也不后退。幸运数为3,指令为[2,3,0,-5]原创 2024-04-03 08:35:22 · 42 阅读 · 0 评论 -
华为OD机试 Python【API集群负载统计】
getKeywordFrequency() 会遍历HashMap中的URL地址,解析每个地址的层级信息,检查给定层级上关键字的出现情况,并累加其出现的频次。某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。原创 2024-03-26 08:34:38 · 48 阅读 · 0 评论 -
华为OD机试 C++【API集群负载统计】
getKeywordFrequency() 会遍历HashMap中的URL地址,解析每个地址的层级信息,检查给定层级上关键字的出现情况,并累加其出现的频次。某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。原创 2024-03-26 08:33:48 · 53 阅读 · 0 评论 -
华为OD机试 Java 【API集群负载统计】
getKeywordFrequency() 会遍历HashMap中的URL地址,解析每个地址的层级信息,检查给定层级上关键字的出现情况,并累加其出现的频次。某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。原创 2024-03-26 08:32:43 · 136 阅读 · 0 评论 -
华为OD机试 Java 【剩余银饰的重量】
然后,通过循环模拟融化银饰的过程,每次移除最重的三块银饰并计算剩余银饰的重量。剩余银饰按照升序插入到已排序的数组中,并根据剩余银饰的数量输出相应的结果:如果剩余两块银饰,则输出较大的重量;有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。= y 且 y == z,会剩余重量为 y - x 的银块无法被熔掉;第二行为n块银饰的重量,重量的取值范围为[1,2000],重量之间使用空格隔开。如果剩余两块,返回较大的重量(若两块重量相同,返回任意一块皆可);原创 2024-03-25 08:31:43 · 125 阅读 · 0 评论 -
华为OD机试 Python【围棋的气】
我们可以遍历棋盘数组,对于每个空交叉点,检查它周围相邻的四个交叉点是否被黑棋或白棋占据,如果有一个被占据,则该空交叉点是一个气。我们计算黑棋和白棋的气数,并将其累加起来。2、所有同色棋子的气之和叫做该色棋子的气,需要注意的是,同色棋子重合的气点,对于该颜色棋子来说,只能计算一次气,比如下图中,黑棋一共4口气,而不是5口气,因为黑1和黑2中间红色三角标出来的气是两个黑棋共有的,对于黑棋整体来说只能算一个气。3、本题目只计算气,对于眼也按气计算,如果您不清楚“眼”的概念,可忽略,按照前面描述的规则计算即可。原创 2024-03-22 08:35:12 · 66 阅读 · 0 评论 -
华为OD机试 Java 【围棋的气】
我们可以遍历棋盘数组,对于每个空交叉点,检查它周围相邻的四个交叉点是否被黑棋或白棋占据,如果有一个被占据,则该空交叉点是一个气。我们计算黑棋和白棋的气数,并将其累加起来。2、所有同色棋子的气之和叫做该色棋子的气,需要注意的是,同色棋子重合的气点,对于该颜色棋子来说,只能计算一次气,比如下图中,黑棋一共4口气,而不是5口气,因为黑1和黑2中间红色三角标出来的气是两个黑棋共有的,对于黑棋整体来说只能算一个气。3、本题目只计算气,对于眼也按气计算,如果您不清楚“眼”的概念,可忽略,按照前面描述的规则计算即可。原创 2024-03-22 08:33:25 · 183 阅读 · 0 评论 -
华为OD机试 Python【掌握的单词个数】
我们可以使用一个长度为 26 的整数数组来存储每个小写字母的出现次数,同时记录通配符的数量。” 可以当作 “a” 等字母。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。:对于给定的单词数组 words,逐个检查每个单词是否可以由 chars 中的字符拼写而成。输出词汇表 words 中你掌握的所有单词的个数。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。words 的字符仅由 a-z 英文小写字母组成,例如 “abc”原创 2024-03-21 08:34:34 · 40 阅读 · 0 评论 -
华为OD机试 C++【掌握的单词个数】
我们可以使用一个长度为 26 的整数数组来存储每个小写字母的出现次数,同时记录通配符的数量。” 可以当作 “a” 等字母。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。:对于给定的单词数组 words,逐个检查每个单词是否可以由 chars 中的字符拼写而成。输出词汇表 words 中你掌握的所有单词的个数。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。words 的字符仅由 a-z 英文小写字母组成,例如 “abc”原创 2024-03-21 08:33:55 · 25 阅读 · 0 评论 -
华为OD机试 Java【掌握的单词个数】
我们可以使用一个长度为 26 的整数数组来存储每个小写字母的出现次数,同时记录通配符的数量。” 可以当作 “a” 等字母。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。:对于给定的单词数组 words,逐个检查每个单词是否可以由 chars 中的字符拼写而成。输出词汇表 words 中你掌握的所有单词的个数。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。words 的字符仅由 a-z 英文小写字母组成,例如 “abc”原创 2024-03-21 08:33:22 · 127 阅读 · 0 评论 -
华为OD机试 Java【找位置】
将已排好序的队列转换为整数数组,并对数组进行排序。二分查找在排序后的队列中找到小红的学号应该插入的位置。如果小红的学号恰好在队列中已有学号的位置,则返回该位置;否则,返回小红学号应该插入的位置(即该位置之前的学号都小于小红的学号,该位置之后的学号都大于小红的学号)。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模 ≤ 10000;小红来迟了,请你给小红出个主意,让她尽快找到她应该排的位置。小朋友出操,按学号从小到大排成一列;原创 2024-03-20 08:32:36 · 150 阅读 · 0 评论 -
华为OD机试 C++【地图寻宝】
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。2、在 dfs 函数中,使用栈来存储待探索的方格的坐标,初始将起点(0, 0)加入栈中。1、 dfs(m, n, k, grid),表示在地图大小为m × n,数位和不超过k的情况下,从起点(0, 0)开始搜索并统计黄金的数量。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。原创 2024-03-18 08:35:36 · 29 阅读 · 0 评论 -
华为OD机试 Java【地图寻宝】
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。2、在 dfs 函数中,使用栈来存储待探索的方格的坐标,初始将起点(0, 0)加入栈中。1、 dfs(m, n, k, grid),表示在地图大小为m × n,数位和不超过k的情况下,从起点(0, 0)开始搜索并统计黄金的数量。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。原创 2024-03-18 08:33:41 · 120 阅读 · 0 评论 -
华为OD机试 C++【合法数学表达式提取】
这种解决方案的时间复杂度为 O(n),其中 n 是输入字符串的长度。我们只需要遍历一次字符串即可找到最长合法表达式并计算其值。提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。使用两个指针 start 和 i 来标记当前合法表达式的起始位置和结束位置。2、如果有多个长度一样的,请返回第一个表达式的结果。需要遍历整个输入字符串,找出最长的合法数学表达式。最后,检查剩余的字符串是否构成了更长的合法表达式。合法表达式只能包含数字和运算符 +、-、*。3、数学表达式,必须是最长的,合法的。原创 2024-03-15 08:31:02 · 43 阅读 · 0 评论 -
华为OD机试 Java 【合法数学表达式提取】
这种解决方案的时间复杂度为 O(n),其中 n 是输入字符串的长度。我们只需要遍历一次字符串即可找到最长合法表达式并计算其值。提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。最后,要检查剩余的字符串是否构成了更长的合法表达式。2、如果有多个长度一样的,请返回第一个表达式的结果。需要遍历整个输入字符串,找出最长的合法数学表达式。4、操作符不能连续出现,如 ±-+1 是不合法的。合法表达式只能包含数字和运算符 +、-、*。3、数学表达式,必须是最长的,合法的。1、找出最长合法表达式。原创 2024-03-15 08:30:20 · 108 阅读 · 0 评论 -
华为OD机试 C++【机器人搬砖】
机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格只在这一个小时有效,为使得机器人损耗最小化,应尽量减小每次补充的能量格数。机器人搬砖,一共有 N 堆砖存放在 N 个不同的仓库中,第 i 堆砖中有 bricks[i] 块砖头,要求在 8 小时内搬完。为了保障在 8 小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。机器人每小时最少需要充的能量格,若无法完成任务,输出 -1。机器人每小时补充能量格只在这一个小时中有效;无需考虑机器人搬砖的耗时;原创 2024-03-14 08:32:57 · 57 阅读 · 0 评论 -
华为OD机试 C++【游戏分组】
例:10 名参赛者的评分分别为:5 1 8 3 4 6 7 10 9 2,分组为(1 3 5 8 10)和(2 4 6 7 9),两组实力差最小,差值为1。2、计算两组评分总和的差值的绝对值:对于每个分组组合,计算其中一个队伍的评分总和,然后计算另一个队伍的评分总和,并计算它们之间的差值的绝对值。现在给你 10 名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。10个整数,表示10名参与者的游戏水平评分。3、更新最小差值:在计算过程中,持续跟踪最小的评分总和差值的绝对值。原创 2024-03-11 08:34:50 · 54 阅读 · 0 评论 -
华为OD机试 Java【游戏分组】
例:10 名参赛者的评分分别为:5 1 8 3 4 6 7 10 9 2,分组为(1 3 5 8 10)和(2 4 6 7 9),两组实力差最小,差值为1。2、计算两组评分总和的差值的绝对值:对于每个分组组合,计算其中一个队伍的评分总和,然后计算另一个队伍的评分总和,并计算它们之间的差值的绝对值。现在给你 10 名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。10个整数,表示10名参与者的游戏水平评分。3、更新最小差值:在计算过程中,持续跟踪最小的评分总和差值的绝对值。原创 2024-03-11 08:31:59 · 172 阅读 · 0 评论 -
华为OD机试 C++【密码输入检测】
处理退格符号 ‘<’,使用栈遍历输入字符串,遇到字符 ‘<’ 时将栈顶元素出栈,表示退格操作,否则将当前字符压入栈中。然后构建密码字符串,遍历完输入字符串后,栈中剩下的字符就是最终的密码字符,因为退格符号会将前一个输入字符删除。给定用户密码输入流 input,输入流中字符 ‘<’ 表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。4、密码至少需要包含 1 个数字;原创 2024-03-08 08:32:56 · 24 阅读 · 0 评论 -
华为OD机试 Python【最长子字符串的长度】
3、如果 ‘o’ 的总个数是奇数,那么去掉一个 ‘o’ 后,剩余的部分就是满足条件的最长子字符串,返回字符串长度减一。给你一个字符串 s,首尾相连成一个环形,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。2、如果 ‘o’ 的总个数是偶数,那么整个字符串就是满足条件的最长子字符串,直接返回字符串的长度。说明 最长子字符串之一是 “alolob”,它包含2个’o’1、统计字符串中 ‘o’ 的总个数。输入是一个小写字母组成的字符串。s 只包含小写英文字母。输入 alolobo。原创 2024-02-27 08:05:41 · 139 阅读 · 0 评论