华为OD机试 (Py & Java & C++ & Js)
文章平均质量分 58
全网最全、最详细的华为OD机试真题(500+,覆盖各年A、B、C卷),每篇博客提供详细的解题思路,以及Python、Java、C++、javascript等四种语言的代码实现。
【知识星球:华为OD导航星】专注解决、交流华为OD机试、面试相关信息,部门详情、绩效机制,应有尽有,欢迎加入!
steven_moyu
大厂算法工程师,AIGC创业者。
【知识星球:华为OD导航星】专注解决、交流华为OD机试、面试相关信息,部门详情、绩效机制,应有尽有,欢迎加入!
展开
-
华为OD机试 - 排队游戏(Python、Java、C++、Javascript)
新来的老师给班里的同学排一个队。每个学生有一个影力值。一些学生是刺头,不会听老师的话,自己选位置,非刺头同学在剩下的位置按照能力值从小到大排。对于非刺头同学,如果发现他前面有能力值比自己高的同学,他不满程度就增加,增加的数量等于前面能力值比他大的同学的个数。刺头不会产生不满。如果整个班级累计的不满程度超过k,那么老师就没有办法教这个班级了。原创 2024-03-03 13:47:36 · 29 阅读 · 0 评论 -
华为OD机试 - 用连续自然数之和来表达整数(Python、Java、C++、Javascript)
一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,切打印出每种表达式。原创 2024-03-03 13:46:20 · 20 阅读 · 0 评论 -
华为OD机试 -螺旋数字矩阵(Python、Java、C++、Javascript)
疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,…,n,最终形成一个 m 行矩阵。小明对这个矩阵有些要求:每行数字的个数一样多列的数量尽可能少填充数字时优先填充外部数字不够时,使用单个 * 号占位原创 2024-03-03 13:45:38 · 48 阅读 · 0 评论 -
华为OD机试 - 信道分配(Python、Java、C++、Javascript)
算法工程师小明面对着这样一个问题,需要将通信用的信道分配给尽量多的用户:信道的条件及分配规则如下:1)所有信道都有属性:“阶”。阶为r的信道的容量为2^r比特2)所有用户需要传输的数据量都一样:D比特3)一个用户可以分配多个信道,但每个信道只能分配给一个用户4)只有当分配给一个用户的所有信道的容量和>=D,用户才能传输数据给出一组信道资源,最多可以为多少用户传输数据?原创 2024-03-03 11:47:58 · 36 阅读 · 0 评论 -
华为OD机试 - 核酸检测(Python、Java、C++、Javascript)
为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要静尊圈定可能被感染的人群。现在根据传染病流调以及大数据分析,得到了每个人之间在时间、空间上是否存在轨迹的交叉。现在给定一组确诊人员编号(X1, X2, X3, …, Xn),在所有人当中,找出那些人需要进行核酸检测,输出需要进行核酸检测的人数。(注意:确诊病例自身不需要再做核酸检测)需要进行核酸检测的人,是病毒传播链条上的所有人员,即有可能通过确诊病例所能传播到的所有人。原创 2024-03-03 11:47:17 · 149 阅读 · 0 评论 -
华为OD机试 - 找出两个整数数组中同时出现的整数(Python、Java、C++、Javascript)
现有两个整数数组,需要你找出两个数组中同时出现的整数,并按照如下要求输出:有同时出现的整数时,先按照同时出现的次数(整数在两个数组中都出现并且出现次数较少的那个)进行归类,然后按照出现次数从小到大依次按行输出。没有同时出现的整数时,输出NULL。原创 2024-03-03 11:46:27 · 13 阅读 · 0 评论 -
华为OD机试 - 阿里巴巴找黄金宝箱(V)(Python、Java、C++、Javascript)
一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意间发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子,每个箱子上面贴有一个数字。阿里巴巴念出一个咒语数字k(k原创 2024-03-03 11:45:44 · 98 阅读 · 0 评论 -
华为OD机试 - 字符串划分(Python、Java、C++、Javascript)
给定一个小写字母组成的字符串 s,请找出字符串中两个不同位置的字符作为分割点,使得字符串分成三个连续子串且子串权重相等,注意子串不包含分割点。若能找到满足条件的两个分割点,请输出这两个分割点在字符串中的位置下标,若不能找到满足条件的分割点请返回0,0。子串权重计算方式为:子串所有字符的ASCII码数值之和。原创 2024-02-26 14:09:47 · 20 阅读 · 0 评论 -
华为OD机试 - 采样过滤(Python、Java、C++、Javascript)
在做物理实验时,为了计算物体移动的速率,通过相机等工具周期性的采样物体移动距离。由于工具故障,采样数据存在误差甚至错误的情况。需要通过一个算法过滤掉不正确的采样值。不同工具的故障模式存在差异,算法的各类门限会根据工具类型做相应的调整。请实现一个算法,计算出给定一组采样值中正常值的最长连续周期。原创 2024-02-26 14:09:07 · 20 阅读 · 0 评论 -
华为OD机试 - 荒岛求生(Python、Java、C++、Javascript)
一个荒岛上有若干人,岛上只有一条路通往岛屿两端的港口,大家需要逃往两端的港口才可逃生。假定每个人移动的速度一样,且只可选择向左或向右逃生。若两个人相遇,则进行决斗,战斗力强的能够活下来,并损失掉与对方相同的战斗力;若战斗力相同,则两人同归于尽。原创 2024-02-26 14:07:41 · 14 阅读 · 0 评论 -
华为OD机试 - 二维伞的雨滴效应(Python、Java、C++、Javascript)
普通的伞在二维平面世界中,左右两侧均有一条边,而两侧伞边最下面各有一个伞坠子,雨滴落到伞面,逐步流到伞坠处,会将伞坠的信息携带并落到地面,随着日积月累,地面会呈现伞坠的信息。1、为了模拟伞状雨滴效应,用二叉树来模拟二维平面伞(如下图所示),现在输入一串正整数数组序列(不含0,数组成员至少是1个),若此数组序列是二叉搜索树的前序遍历的结果,那么请输出一个返回值1,否则输出0。2、同时请将此序列构成的伞状效应携带到地面的数字信息输出来(左边伞坠信息,右边伞坠信息,详细参考示例图地面上数字),若此树不存在原创 2024-02-26 14:05:36 · 17 阅读 · 0 评论 -
华为OD机试 - 无重复字符的最长子串(Python、Java、C++、Javascript)
给定一个字符串s(0 ≤ s.length ≤ 5 * 10000,且由英文字母、数字、符号和空格组成),请你找出其中不含有重复字符的最长子串的长度。原创 2024-02-26 14:04:49 · 10 阅读 · 0 评论 -
华为OD机试 - 最富裕的小家庭(Python、Java、C++、Javascript)
在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。原创 2024-02-26 14:03:21 · 49 阅读 · 0 评论 -
华为OD机试 - 爱吃蟠桃的孙悟空(Python、Java、C++、Javascript)
孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有 N 棵桃树,每颗树上都有桃子,守卫将在 H 小时后回来。孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉 K 个,如果树上的桃子少于 K 个,则全部吃掉,并且这一小时剩余的时间里不再吃桃。孙悟空喜欢慢慢吃,但又想在守卫回来前吃完桃子。请返回孙悟空可以在 H 小时内吃掉所有桃子的最小速度 K(K为整数)。如果以任何速度都吃不完所有桃子,则返回0。原创 2024-02-26 14:02:43 · 32 阅读 · 0 评论 -
华为OD机试 - 开源项目热度榜单(Python、Java、C++、Javascript)
某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的热度根据这5个维度的加权求和进行排序。原创 2024-02-26 14:00:24 · 384 阅读 · 0 评论 -
华为OD机试 - 电脑病毒感染(Python、Java、C++、Javascript)
一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用 t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1。给定一个数组 times 表示一台电脑把相邻电脑感染所用的时间。原创 2024-02-26 13:59:28 · 29 阅读 · 0 评论 -
华为OD机试 - 虚拟理财游戏(Python、Java、C++、Javascript)
在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。你要在可接受范围内选择最优的投资方式获得最大回报。原创 2024-02-26 13:57:54 · 197 阅读 · 0 评论 -
华为OD机试 - 最长子字符串的长度(Python、Java、C++、Javascript)
给你一个字符串 s,首尾相连成一个环形,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。原创 2024-02-24 16:49:07 · 33 阅读 · 0 评论 -
华为OD机试 - 机器人搬砖(Python、Java、C++、Javascript)
机器人搬砖,一共有 N 堆砖存放在 N 个不同的仓库中,第 i 堆砖中有 bricks[i] 块砖头,要求在 8 小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格只在这一个小时有效,为使得机器人损耗最小化,应尽量减小每次补充的能量格数。为了保障在 8 小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。原创 2024-02-24 16:47:46 · 100 阅读 · 0 评论 -
华为OD机试 - 内存冷热标记(Python、Java、C++、Javascript)
现代计算机系统中通常存在多级的存储设备,针对海量 workload 的优化的一种思路是将热点内存页优先放到快速存储层级,这就需要对内存页进行冷热标记。一种典型的方案是基于内存页的访问频次进行标记,如果统计窗口内访问次数大于等于设定阈值,则认为是热内存页,否则是冷内存页。对于统计窗口内跟踪到的访存序列和阈值,现在需要实现基于频次的冷热标记。内存页使用页框号作为标识。原创 2024-02-24 16:46:56 · 30 阅读 · 0 评论 -
华为OD机试 - 密码输入检测(Python、Java、C++、Javascript)
给定用户密码输入流 input,输入流中字符 ‘原创 2024-02-24 16:46:01 · 39 阅读 · 0 评论 -
华为OD机试 - 转盘寿司(Python、Java、C++、Javascript)
寿司店周年庆,正在举办优惠活动回馈新老客户。寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格,如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足条件的 j,则不赠送寿司。每个价格的寿司都可无限供应。原创 2024-02-24 16:44:37 · 79 阅读 · 0 评论 -
华为OD机试 - 小朋友分组最少调整次数(Python、Java、C++、Javascript)
个学生排成一排,学生编号分别是 1 到 n,n 为 3 的整倍数。老师随机抽签决定将所有学生分成 m 个 3 人的小组(n == 3 * m) ,为了便于同组学生交流,老师决定将小组成员安排到一起,也就是同组成员彼此相连,同组任意两个成员之间无其它组的成员。因此老师决定调整队伍,老师每次可以调整任何一名学生到队伍的任意位置,计为调整了一次, 请计算最少调整多少次可以达到目标。原创 2024-02-24 16:43:36 · 37 阅读 · 0 评论 -
华为OD机试 - 二叉树计算(Python、Java、C++、Javascript)
给出一个二叉树如下图所示:请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。原创 2024-02-24 16:42:48 · 52 阅读 · 0 评论 -
华为OD机试 - 游戏分组(Python、Java、C++、Javascript)
部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。一队的实力可以表示为这一队 5 名队员的评分总和。现在给你 10 名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。原创 2024-02-24 16:41:54 · 80 阅读 · 0 评论 -
华为OD机试 - 掌握的单词个数(Python、Java、C++、Javascript)
有一个字符串数组 words 和一个字符串 chars。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。words 的字符仅由 a-z 英文小写字母组成,例如 “abc”chars 由 a-z 英文小写字母和 “?” 组成。其中英文 “?” 表示万能字符,能够在拼写时当作任意一个英文字母。例如:“?” 可以当作 “a” 等字母。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。原创 2024-02-24 16:40:09 · 15 阅读 · 0 评论 -
华为OD机试 - 分月饼(Python、Java、C++、Javascript)
中秋节,公司分月饼,m 个员工,买了 n 个月饼,m ≤ n,每个员工至少分 1 个月饼,但可以分多个,单人分到最多月饼的个数是 Max1 ,单人分到第二多月饼个数是 Max2 ,Max1 - Max2 ≤ 3 ,单人分到第 n - 1 多月饼个数是 Max(n-1),单人分到第n多月饼个数是 Max(n) ,Max(n-1) – Max(n) ≤ 3,问有多少种分月饼的方法?原创 2024-02-24 16:38:38 · 53 阅读 · 0 评论 -
华为OD机试 - 小华地图寻宝(Python、Java、C++、Javascript)
小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。小华从入口 (0,0) 进入,任何时候只能向左,右,上,下四个方向移动一格。请问小华最多能获得多少克黄金?原创 2024-02-24 16:37:46 · 75 阅读 · 0 评论 -
华为OD机试 - 执行任务赚积分(Python、Java、C++、Javascript)
现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。原创 2024-02-23 12:01:59 · 139 阅读 · 0 评论 -
华为OD机试 - 计算三叉搜索树的高度(Python、Java、C++、Javascript)
定义构造三叉搜索树规则如下:每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是:1.如果数小于节点的数减去500,则将数插入节点的左子树2.如果数大于节点的数加上500,则将数插入节点的右子树3.否则,将数插入节点的中子树给你一系列数,请按以上规则,按顺序将数插入树中,构建出一棵三叉搜索树,最后输出树的高度。原创 2024-02-23 12:01:18 · 41 阅读 · 0 评论 -
华为OD机试 - API集群负载统计(Python、Java、C++、Javascript)
某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。现在负载均衡模块需要知道给定层级上某个名字出现的频次,未出现过用0表示,实现这个功能。原创 2024-02-23 12:00:38 · 43 阅读 · 0 评论 -
华为OD机试 - 剩余银饰的重量(Python、Java、C++、Javascript)
有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。每一回合,从中选出三块最重的银饰,然后一起熔掉。假设银饰的重量分别为 x 、y和z,且 x ≤ y ≤ z。那么熔掉的可能结果如下:•如果 x == y == z,那么三块银饰都会被完全熔掉;•如果 x == y 且 y != z,会剩余重量为 z - y 的银块无法被熔掉;•如果 x != y 且 y == z,会剩余重量为 y - x 的银块无法被熔掉;原创 2024-02-23 11:59:46 · 83 阅读 · 0 评论 -
华为OD机试 - 最多购买宝石数目(Python、Java、C++、Javascript)
橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i]0 ≤ i < nn = gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],…,gems[i+m-1]0 ≤ i < nm ≤ n假设你当前拥有总面值为 value 的钱,请问最多能购买到多少个宝石,如无法购买宝石,则返回0。原创 2024-02-23 11:59:00 · 24 阅读 · 0 评论 -
华为OD机试 - 小明的幸运数(Python、Java、C++、Javascript)
小明在玩一个游戏,游戏规则如下:在游戏开始前,小明站在坐标轴原点处(坐标值为0).给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指令前进指定步数或者后退指定步数。前进代表朝坐标轴的正方向走,后退代表朝坐标轴的负方向走。幸运数为一个整数,如果某个指令正好和幸运数相等,则小明行进步数+1。原创 2024-02-23 11:58:17 · 23 阅读 · 0 评论 -
华为OD机试 - 机场航班调度程序(Python、Java、C++、Javascript)
XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。但是XX市机场只有一条起飞跑道,调度人员需要安排目前停留在机场的航班有序起飞。为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。请编写一段代码根据输入的航班号信息帮助调度员输出航班的起飞顺序。原创 2024-02-23 11:55:21 · 84 阅读 · 0 评论 -
华为OD机试 - 5G网络建设(Python、Java、C++、Javascript)
现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间假设光纤的成本各不相同,且有些节点之间已经存在光纤相连。请你设计算法,计算出能联通这些基站的最小成本是多少。原创 2024-02-23 11:54:35 · 35 阅读 · 0 评论 -
华为OD机试 - 攀登者2(Python、Java、C++、Javascript)
攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。原创 2024-02-23 11:52:54 · 78 阅读 · 0 评论 -
华为OD机试 - 密码解密(Python、Java、C++、Javascript)
给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。映射的规则(‘a’ ~ ‘i’)分别用(‘1’ ~ ‘9’)表示;(‘j’ ~ ‘z’)分别用(“10*” ~ “26*”)表示。约束:映射始终唯一。原创 2024-02-22 09:51:11 · 70 阅读 · 0 评论 -
华为OD机试 - 来自异国的客人(Python、Java、C++、Javascript)
有位客人来自异国,在该国使用 m 进制计数。该客人有个幸运数字n(n < m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。问:当其购买一个在我国价值 k 的产品时,其中包含多少幸运数字?原创 2024-02-22 09:50:26 · 41 阅读 · 0 评论 -
华为OD机试 - 求幸存数之和(Python、Java、C++、Javascript)
给一个正整数数列 nums,一个跳数 jump,及幸存数量 left。运算过程为:从索引0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1 的数字,该数被敲出,并从该点起跳,以此类推,直到幸存 left 个数为止,然后返回幸存数之和。原创 2024-02-22 09:49:46 · 117 阅读 · 0 评论