
华为OD机考
文章平均质量分 51
华为OD机考引路人
优惠券已抵扣
余额抵扣
还需支付
¥59.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
清水乐园
这个作者很懒,什么都没留下…
展开
-
华为OD机试 - 最大数字
题目描述给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。如”34533″,数字3重复超过2次,需要删除其中一个3,删除第一个3后获得最大数值”4533″请返回经过删除操作后的最大的数值,以字符串表示。输入描述第一行为一个纯数字组成的字符串,长度范围:[1,100000]输出描述输出经过删除操作后的最大的数值。原创 2023-05-30 07:25:53 · 318 阅读 · 1 评论 -
流浪地球、环形山信号塔
在一座环形山上,均匀建造了 n 座信号塔,编号 0 ~ n-1。其中有 m 座信号塔会主动在某个特定时刻变为发射状态。发射信号需要经过 1 个单位时间到达相邻信号塔。若相邻信号塔此时是静默状态,则在接收到信号后,会被激活为发射状态。若相邻信号塔已经处于发射状态,则状态不变。请你输出每个信号塔变为发射状态的时刻。第一行输入 n,表示环形山上信号塔的数量。n 不大于 10000。第二行输入 m * 2 个整数,每两个一组,组内元素含义是:主动变为发射状态的信号塔编号 主动变为发射状态的时刻。原创 2025-03-28 00:47:57 · 37 阅读 · 0 评论 -
华为OD技术面 - 手撕算法题整理
华为OD技术面手撕算法原创 2025-02-06 21:25:01 · 148 阅读 · 0 评论 -
503. 下一个更大元素 II
是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。第二个 1 的下一个最大的数需要循环搜索,结果也是 2。第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;原创 2024-12-25 02:21:11 · 44 阅读 · 0 评论 -
力扣 496. 下一个更大元素 I
2 ,用加粗斜体标识,nums2 = [1,3,4,- 4 ,用加粗斜体标识,nums2 = [1,2,3,如果不存在下一个更大元素,那么本次查询的答案是。- 4 ,用加粗斜体标识,nums2 = [1,3,不存在下一个更大元素,所以答案是 -1。- 2 ,用加粗斜体标识,nums2 = [1,不存在下一个更大元素,所以答案是 -1。不存在下一个更大元素,所以答案是 -1。- 1 ,用加粗斜体标识,nums2 = [下一个更大元素是 3。下一个更大元素是 3。原创 2024-12-21 17:51:46 · 98 阅读 · 0 评论 -
850. 矩形面积 II
由于数据范围只有 200,我们可以对给定的所有矩形进行遍历,统计所有对该矩形有贡献的 y 值线段(即有哪些 rs[i] 落在该矩形中),再对线段进行求交集(总长度),即可计算出该矩形的「高度」,从而计算出来该矩形的面积。处理所有相邻的扫描线,并计算相邻扫描线形成的矩形面积复杂度为 O(nlogn)。相邻线段之间的宽度为单个矩形的「宽度」(通过 x 差值直接算得),问题转换为求该区间内高度的并集(即矩形的高度)。从(1,1)到(2,2),绿色矩形和红色矩形重叠。从(1,0)到(2,3),三个矩形都重叠。原创 2024-10-30 21:57:10 · 89 阅读 · 0 评论 -
华为OD面试 - 问卷调查(Java)
负责人创建了列表 reviews 存放由小写字母和空格组成的调查结果,以及列表 languages 存放由小写字母组成的不同编程语言。根据负责人提供的语言列表 languages,整理出 reviews 中出现频率最高的前 k 种语言。1 ≤ k ≤ 20,并保证 k ≤ languages.length。某编程教育机构对学生进行了问卷调查,调查结果用来进行完善教研工作。字典序:是指按照单词出现在字典的顺序进行排序的方法。原创 2024-08-20 23:03:05 · 185 阅读 · 0 评论 -
华为OD面试:有效的括号
判断字符串是否有效。原创 2024-08-20 10:15:48 · 148 阅读 · 0 评论 -
华为OD面试 - 字符串编码校验(Java )
有一种校验码机制,用于数据传输中的数据完整性检查,规则如下:在字符串中插入一些数字作为校验码,每个数字之后跟随对应个数的字符;要求有校验码(校验码大于零并且无前导零),并且正确匹配、无歧义:如,"helloworld" 在插入校验码之后可以为 "5hello5world",即 5 + "hello" + 5 + "world";原创 2024-08-20 02:03:07 · 323 阅读 · 0 评论 -
华为OD机试 - 计算最接近的数(Java)
给定一个数组X和正整数K,请找出使表达式:结果最接近于数组中位数的下标 i ,如果有多个 i 满足条件,请返回最大的 i.其中,数组中位数:长度为N的数组,按照元素的值大小升序排列后,下标为 N/2 元素的值无无。原创 2023-09-03 12:16:17 · 392 阅读 · 0 评论 -
华为OD机试 - 分割数组的最大差值(Java)
给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值,计算这两个值的差值,请输出所有分割方案中,差值最大的值。左数组 = [1,-2,3,4,-9] 且 右数组 = [7],和的差值 = | -3 - 7| = 10最大的差值为10。左数组 = [1,-2,3,4] 且右数组=[-9,7],和的差值 = | 6 - (-2) | = 8,定义一个rightSum,用于统计右数组的和,初始为sum(nums)原创 2023-08-27 22:53:21 · 300 阅读 · 0 评论 -
华为OD机试 - 增强的strstr(Java)
C 语言有一个库函数: char *strstr(const char *haystack, const char *needle) ,实现在字符串 haystack 中查找第一次出现字符串 needle 的位置,如果未找到则返回 null。现要求实现一个strstr的增强函数,可以使用带可选段的字符串来模糊查询,与strstr一样返回首次查找到的字符串位置。与strstr函数不同,返回的是源字符串中,匹配子字符串相对于源字符串地址的偏移(从0开始算),如果没有匹配返回-1。原创 2023-08-27 22:43:12 · 313 阅读 · 0 评论 -
华为OD机试 - 不开心的小朋友(Java)
游乐场里增加了一批摇摇车,非常受小朋友欢迎,但是每辆摇摇车同时只能有一个小朋友使用,如果没有空余的摇摇车,需要排队等候,或者直接离开,最后没有玩上的小朋友会非常不开心。第二行,1号来 2号来(排队) 2号走(不开心离开) 3号来(排队) 1号走 3号走(1号走后摇摇车已有空闲,所以玩后离开)请根据今天小朋友的来去情况,统计不开心的小朋友数量。第二行: 小朋友来去情况。返回不开心的小朋友数量。第一行: 摇摇车数量。原创 2023-08-27 22:19:29 · 145 阅读 · 0 评论 -
华为OD机试 - 计算误码率(Java)
误码率是最常用的数据通信传输质量指标。它可以理解为“在多少位数据中出现一位差错”。移动通信网络中的误码率主要是指比特误码率,其计算公式如下: 比特误码率=错误比特数/传输总比特数,为了简单,我们使用字符串来标识通信的信息,一个字符错误了,就认为出现了一个误码输入一个标准的字符串,和一个传输后的字符串,计算误码率字符串会被压缩,例:“2A3B4D5X1Z”表示"AABBBDDDDXXXXXZ"用例会保证两个输入字符串解压后长度一致,解压前的长度不一定一致。原创 2023-08-27 20:05:39 · 183 阅读 · 0 评论 -
华为OD机试 - 返回矩阵中非1的元素个数(Java)
将数组所有成员随机初始化为0或2,再将矩阵的[0, 0]元素修改成1,在经过足够长的时间后求矩阵中有多少个元素是0或2(即0和2数量之和)。其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。存在一个m*n的二维数组,其成员取值范围为0,1,2。输入数字前两个数字是矩阵大小。后面的数字是矩阵内容。输入的前两个数字是矩阵大小。后面是数字矩阵内容。所以矩阵中非1的元素个数为9。而值为2的元素,免疫同化。返回矩阵中非1的元素个数。原创 2023-08-26 11:48:54 · 85 阅读 · 0 评论 -
华为OD机试 - 跳房子II(Java)
跳房子,也叫跳飞机,是一种世界性的儿童游戏。游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格,然后获得一次选房子的机会,直到所有房子被选完,房子最多的人获胜。跳房子的过程中,如果有踩线等违规行为,会结束当前回合,甚至可能倒退几步。假设房子的总格数是count,小红每回合可能连续跳的步数都放在数组steps中,请问数组中是否有一种步数的组合,可以让小红三个回合跳到最后一格?如果有,请输出索引和最小的步数组合(数据保证索引和最小的步数组合是唯一的)。原创 2023-08-26 11:31:52 · 132 阅读 · 0 评论 -
华为OD机试 - 生日礼物(Java)
小牛的孩子生日快要到了,他打算给孩子买蛋糕和小礼物,蛋糕和小礼物各买一个,他的预算不超过x元。蛋糕cake和小礼物gift都有多种价位的可供选择。请返回小牛共有多少种购买方案。第一行表示cake的单价,以逗号分隔第二行表示gift的单价,以逗号分隔第三行表示x预算输出数字表示购买方案的总数。原创 2023-08-26 08:27:27 · 141 阅读 · 0 评论 -
华为OD机试 - 周末爬山(Java)
周末小明准备去爬山锻炼,0代表平地,山的高度使用1到9来表示,小明每次爬山或下山高度只能相差k及k以内,每次只能上下左右一个方向上移动一格,小明从左上角(0,0)位置出发第一行输入m n k(空格分隔)然后接下来输入山地图,一共m行n列,均以空格分隔。请问小明能爬到的最高峰多高,到该最高峰的最短步数,输出以空格分隔。同高度的山峰输出较短步数。如果没有可以爬的山峰,则高度和步数都返回0。原创 2023-08-26 08:00:47 · 97 阅读 · 0 评论 -
华为OD机试 - 最佳的出牌方法(Java)
求出一副牌最高的得分数按顺序排好的一副牌,最少1张,最多15张。1-9输入为数字1-9,10输入为数字0,JQK输入为大写字母JQK.无需考虑输入非法的情况,例如输入字符不在[0-9JQK]范围或某一张牌超过4张最高的得分数。原创 2023-08-25 21:50:53 · 120 阅读 · 0 评论 -
华为OD机试 - 数字序列比大小(Java)
A,B两个人玩一个数字的游戏,在游戏前,两个人会拿到相同长度的两个数字序列,两个数字序列不相同的,且其中的数字是随机的。A,B各自从数字序列中挑选出一个数字进行大小比较,赢的人得1分,输的人扣1分,相等则各自的分数不变。用过的数字需要丢弃。求A可能赢B的最大分数。输入数据的第1个数字表示数字序列的长度N,后面紧跟着两个长度为N的数字序列。A可能赢B的最大分数。原创 2023-08-25 21:39:03 · 209 阅读 · 0 评论 -
华为OD机试 - 高效的任务规划(Java)
一个设备由N种类型元器件组成(每种类型元器件只需要一个,类型type编号从0~N-1),每个元器件均有可靠性属性reliability,可靠性越高的器件其价格price越贵。而设备的可靠性由组成设备的所有器件中可靠性最低的器件决定。给定预算S,购买N种元器件( 每种类型元器件都需要购买一个),在不超过预算的情况下,请给出能够组成的设备的最大可靠性。S N // S总的预算,N元器件的种类total // 元器件的总数,每种型号的元器件可以有多种;此后有total行具体器件的数据。原创 2023-08-25 21:14:53 · 120 阅读 · 0 评论 -
华为OD机试 - 战场索敌(Java & JS & Python)
有一个大小是N*M的战场地图,被墙壁 '#' 分隔成大小不同的区域,上下左右四个方向相邻的空地 '.' 属于同一个区域,只有空地上可能存在敌人'E”,请求出地图上总共有多少区域里的敌人数小于K。深度优先搜索(基于栈结构,后进先出)广度优先搜索(基于队列结构,先进先出)广度优先搜索(基于队列结构,先进先出)之后为一个NxM大小的字符数组。第一行输入为N,M,K;敌人数小于K的区域数量。原创 2023-08-25 21:00:26 · 117 阅读 · 0 评论 -
华为OD机试 - 矩阵元素的边界值(Java)
给定一个N*M矩阵,请先找出M个该矩阵中每列元素的最大值,然后输出这M个值中的最小值无无。原创 2023-08-19 15:41:59 · 225 阅读 · 0 评论 -
华为OD机试 - 求最小步数(Java)
求从坐标零点到坐标点n的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3。注意:途径的坐标点可以为负数坐标点n输出从坐标零点移动到坐标点n的最小步数。原创 2023-08-19 15:37:43 · 137 阅读 · 0 评论 -
华为OD机试 - 寻找相似单词(Java)
相似单词说明:给定一个单词X,如果通过任意交换单词中字母的位置得到不同的单词Y,那么定义Y是X的相似单词,如abc、bca即为相似单词(大小写是不同的字母,如a和A算两个不同字母)。最后一行是指定的待检测单词(用于检测上面给定的单词中哪些是与该指定单词是相似单词,该单词可以不是上面给定的单词)原创 2023-08-19 14:08:20 · 75 阅读 · 0 评论 -
华为OD机试 - 比赛(Java)
2号选手得分36分排第1,1号选手36分排第2,5号选手30分(2号10分值有3个,1号10分值只有1个,所以2号排第一)一个有N个选手参加比赛,选手编号为1~N(3原创 2023-08-19 12:58:28 · 80 阅读 · 0 评论 -
华为OD机试 - 全量和已占用字符集(Java)
给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。要求输出剩余可用字符集。原创 2023-08-19 12:09:25 · 69 阅读 · 0 评论 -
华为OD机试 - 英文输入法(Java)
从用户已输入英文语句”I love you”中提炼出“I”、“love”、“you”三个单词,接下来用户输入“He”,依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,从已输入信息中无法联想到任何符合要求的单词,因此输出用户输入的单词前缀。输出符合要求的单词序列或单词前缀,存在多个时,单词之间以单个空格分割。输出的单词序列,不能有重复单词,且只能是英文单词,不能有标点符号。缩略形式如”don’t”,判定为两个单词,”don”和”t”原创 2023-08-19 12:00:40 · 103 阅读 · 0 评论 -
华为OD机试 - 单词接龙(Java)
当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;已经参与接龙的单词不能重复使用。现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙,请输出最长的单词串,单词串是单词拼接而成,中间没有空格。可用于接龙的单词首字母必须要前一个单词的尾字母相同;原创 2023-08-19 11:53:36 · 84 阅读 · 0 评论 -
华为OD机试 - 查字典(Java)
输入一个单词前缀和一个字典,输出包含该前缀的单词。所有包含该前缀的单词,多个单词换行输出。单词前缀+字典长度+字典。字典是一个有序单词数组。原创 2023-08-19 10:39:05 · 79 阅读 · 0 评论 -
华为OD机试 - 支持优先级的队列(Java)
收集完后,我们可以取出字典的key列进行降序排序(高优先级优先),然后遍历降序后的key列,逐个打印字典对应key下的value内容。定义一个字典,用于收集相同优先级的数据,即字典的key是优先级,value是一个维护了插入顺序的Set集合。输入样例中,向队列写入了4个数据,每个数据由数据内容和优先级组成。输入样例中,向队列写入了4个数据,每个数据由数据内容和优先级组成。如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。对于相同优先级的,且不重复的任务,维持插入顺序。输入和输出内容都不含空格。原创 2023-08-19 09:49:02 · 144 阅读 · 0 评论 -
华为OD机试 - 拔河比赛(Java)
公司最近准备进行拔河比赛,需要在全部员工中进行挑选。请实现一个选拔队员的小程序。输入为一个数组,记录了部门人员的身高、体重信息,如[身高,体重]的方式放置;部门全部成员数量为大于10的一个数组。要求输出一个size为10的二维数组。输入为N行员工信息,表示部门报名参加选拔的候选人信息,每行有两个数字,使用空格分隔,表示员工的身高、体重信息如181 70182 70表示两位候选员工,第一人身高181厘米,体重70公斤;第二人身高182厘米,体重70公斤。原创 2023-08-19 09:42:39 · 115 阅读 · 0 评论 -
华为OD机试 - 寻找符合要求的最长子串(Java)
第二行为:字符串s,每个字符范围[0-9a-zA-Z],长度范围[1, 10000]第一行为:要求不包含的指定字符,为单个字符,取值范围[0-9a-zA-Z]一个整数,满足条件的最长子串的长度;请你找出满足该条件的最长子串的长度。如果不存在满足条件的子串,则返回0。原创 2023-08-17 23:58:42 · 111 阅读 · 0 评论 -
华为OD机试 - 猜数字(Java)
其中X表示位置正确的数的个数(数字正确且位置正确),而Y表示数字正确而位置不对的数的个数。每猜一个数,出数者就要根据这个数字给出提示,提示以XAYB形式呈现,直到猜中位置。当前已知N组猜谜者猜的数字与提示,如果答案确定,请输出答案,不确定则输出NA。例如,当谜底为8123,而猜谜者猜1052时,出题者必须提示0A2B。例如,当谜底为5637,而猜谜者才4931时,出题者必须提示1A0B。接下来N行,每一行包含一个猜测的数字与提示结果。输出最后的答案,答案不确定则输出NA。原创 2023-08-17 23:53:56 · 107 阅读 · 0 评论 -
华为OD机试 - 称砝码(Java)
现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn;每种砝码对应的数量为 x1,x2,x3...xn。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。对于每组测试数据:第一行:n --- 砝码的种数(范围[1,10])第二行:m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])第三行:x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])利用给定的砝码可以称出的不同的重量数。转载 2023-08-17 23:51:25 · 79 阅读 · 0 评论 -
华为OD机试 - 插队(Java)
某银行将客户分为了若干个优先级, 1 级最高, 5 级最低,当你需要在银行办理业务时,优先级高的人随时可以插队到优先级低的人的前面。当字符为 a 时,后面会有两个的正整数 num 和 x ,表示到来的客户编号为 num ,优先级为 x;输出包含若干行,对于每个 p , 输出一行,仅包含一个正整数 num , 表示办理业务的客户编号。现在给出一个人员到来和银行办理业务的时间序列,请你在每次银行办理业务时输出客户的编号。(1 ≤ n ≤ 500)当字符为 p 时,表示当前优先级最高的客户去办理业务。原创 2023-08-17 23:48:48 · 61 阅读 · 0 评论 -
华为OD机试 - 回文字符串(Java)
给你一个仅包含大小写字母的字符串,请用这些字母构造出一个最长的回文串,若有多个最长的,返回其中字典序最小的回文串。字符串中的每个位置的字母最多备用一次,也可以不用。原创 2023-08-16 21:26:11 · 70 阅读 · 0 评论 -
华为OD机试 - 最快到达医院的方法(Java)
新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情况。分别是到达A医院的距离,到达B医院的距离,计程车平均速度,上车等待时间,步行速度。经过一番调查,大壮明白了距离自己家最近的定点医院有两家。由于武汉封城,公交停运,私家车不能上路,交通十分不便。一行,计程车(Taxi)、步行(Walk)、相等(Same)给出X,Y,M,L,N的数据,请问大壮到达哪家医院最快?原创 2023-08-16 21:23:13 · 84 阅读 · 0 评论 -
华为OD机试 - 服务中心选址(Java)
如果第 i 个区域的右侧终点right满足 right < location,则第 i 个区域到服务中心的距离为 location - right;如果第 i 个区域的左侧起点left 满足 left > location,则第 i 个区域到服务中心的距离为left - location;如果第 i 个区域的两侧left,right满足left原创 2023-08-16 21:20:47 · 125 阅读 · 0 评论 -
华为OD机试 - 最多几个直角三角形(Java)
每行第一个正整数N,表示线段个数(3原创 2023-08-16 21:16:56 · 74 阅读 · 0 评论