![](https://img-blog.csdnimg.cn/02c075169d9048ce853cb5ac20ca85b2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
华为od机试真题题库Java(A卷&B卷&C卷&D卷)
每日更新真题,希望各位面试的小伙伴顺利拿到offer。
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
codereasy
这个作者很懒,什么都没留下…
展开
-
华为OD机试 Java 【找朋友】
题目在学校中,N 个小朋友站成一队, 第 i 个小朋友的身高为height[i],第 i 个小朋友可以看到的第一个比自己身高更高的小朋友 j ,那么 j 是 i 的好朋友(要求j > i)。请输出一个数组,对应位置的输出是每个小朋友的好朋友位置,如果没有看到好朋友,则输出0。输入描述第一行输入N,N表示有N个小朋友第二行输入N个小朋友的身高height[i],都是整数输出描述输出N个小朋友的好朋友的位置示例1:输入 2100 95输出原创 2024-02-10 17:02:16 · 3917 阅读 · 1 评论 -
2024华为OD机试真题【计算数组中心位置】【Java】
给你一个整数数组nums,请计算数组的中心位置。数组的中心位置是数组的一个下标, 其左侧所有元素相乘的积等于右侧所有元素相乘的积。数组第一个元素的左侧积为1,最后一个元素的右侧积为1。如果数组有多个中心位置,应该返回最靠近左边的那一个,如果数组不存在中心位置,返回-1。初始化完成后,开始遍历数组,从左到右的顺序遍历。对于当前位置 i,首先更新左侧积(如果 i 不是第一个元素,那么左侧积为。遍历整个数组,在遍历的过程中,计算当前元素。左侧积:该元素左侧所有元素的乘积;右侧积:该元素右侧所有元素的乘积;原创 2023-12-25 08:12:39 · 2141 阅读 · 3 评论 -
2024华为OD机试真题题库(A卷&B卷&C卷&D卷)
2023年最新华为机试题库,每道题有详细讲解。原创 2023-05-01 23:41:32 · 43522 阅读 · 18 评论 -
华为OD机试 Java【最优聚集点】
注:允许不同的马在跳的过程中跳到同一位置,坐标为(x,y)的马跳一次可以跳到的坐标为:(x+1, y+2),(x+1, y-2),(x+2, y+1),(x+2, y-1),(x-1, y+2),(x-1, y-2),(x-2, y+1),(x-2, y-1),的格点上,但是不可以超出棋盘范围。接下来输入 m 行 n 列的网格图棋盘,如果第 i 行,第 j 列的元素为 “.” ,代表此格点没有棋子,如果为数字 k(1 ≤ k ≤ 9),代表此格点存在等级为 k 的“马”原创 2024-08-22 08:00:00 · 28 阅读 · 0 评论 -
华为OD机试 Java【最大任务数处理】
通过贪心算法结合优先队列来实现。首先将所有任务按照结束时间降序排列,然后使用优先队列来管理每个任务的开始时间。在遍历任务时,尽量将任务安排在其结束时间前的最早时刻进行处理。通过不断更新可用时间和优先队列,最终计算出可以处理的最大任务数。你可以在 si ≤ day ≤ ei 中的任意一天处理该任务,请返回你可以处理的最大任务数。后面 n 行表示各个任务的开始时间和终止时间,使用 si,ei 表示。输出为一个整数,表示可以处理的最大任务数。第一行为任务数量 n。原创 2024-08-14 08:00:00 · 65 阅读 · 0 评论 -
华为OD机试 Java【多列表元素的均匀分配】
将输入的多个有序列表存储为队列,按照窗口的数量和每个窗口所需的元素个数,将列表中的元素按顺序分配到各个窗口中。1、各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表中为每屏选择一个元素,依次类推。先输出窗口1的元素列表,再输出窗口2的元素列表,再输出窗口3的元素列表,最后输出窗口4的元素列表。(5)再从第一个列表中选择,由于数量不足 4 条,取剩下的 2 条,放到 窗口1 和 窗口2。4、每个列表的元素列表已经过排序处理,输出结果要保证不改变同一个列表的元素顺序。原创 2024-08-13 08:00:00 · 46 阅读 · 0 评论 -
华为OD机试 Java【计算结队编程的有效小组数量】
从部门中选出序号分别为 i、j、k 的3名员工,他们的职级分贝为 level[i],level[j],level[k],结队小组满足 level[i] < level[j] < level[k] 或者 level[i] > level[j] > level[k],其中 0 ≤ i < j < k < n。遍历每个中间的员工,并统计在其左边比它职级低和职级高的员工数量,以及在其右边比它职级低和职级高的员工数量。第二行输入:按序号依次排列的员工的职级 level,中间用空格隔开。第一行输入:员工总数 n。原创 2024-08-07 08:00:00 · 59 阅读 · 0 评论 -
华为OD机试 Java【猴子摘香蕉最大值】
使用双指针,一个指向数组的开头,一个指向末尾,维护一个窗口,窗口大小为N。计算从开头获取i个香蕉和从末尾获取N-i个香蕉的总和,利用前缀和数组求和,遍历所有可能的组合,找出能够获取香蕉的最大值。一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。猴子获取香蕉,每次都只能从行的开头或者末尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉。第二行为数组numbers的值每个数字通过空格分开。第三行输入为N,表示获取的次数。原创 2024-08-06 08:00:00 · 70 阅读 · 0 评论 -
华为OD机试 Java【开发人员工作调度优化】
依次将最大的任务分配给当前工作量最小的开发人员,更新其工作量。通过优先队列获取所有开发人员的最大工作量,作为完成所有任务所需的最短时间。项目组共有 N 个开发人员,项目经理接到了 M 个独立的需求,每个需求的工作量不同,且每个需求只能由一个开发人员独立完成,不能多人合作。假定各个需求直接无任何先后依赖关系,请设计算法帮助项目经理进行工作安排,使整个项目能用最少的时间交付。表示共有 M 个需求,每个需求的工作量分别为X1天,X2天,…第一行输入为 M 个需求的工作量,单位为天,用逗号隔开。原创 2024-08-05 08:00:00 · 73 阅读 · 0 评论 -
华为OD机试 Java【分数表达式计算器】
将输入的表达式分割成数字、运算符和括号;然后将中缀表达式转换为后缀表达式,转化完成之后,使用栈计算后缀表达式的值,通过分数类处理四则运算并化简,得到最简分数形式。字符串格式的表达式,仅支持±*/,数字可能超过两位,可能带有空格,没有负数。用例输入一定合法,不会出现括号匹配的情况。给定一个表达式,求其分数计算结果。表达式结果,以最简格式表达。长度小于200个字符。原创 2024-08-02 08:00:00 · 77 阅读 · 0 评论 -
华为OD机试 Java【基于IP地址获取归属城市】
题目某业务需要根据终端的IP地址获取该终端归属的城市,可以根据公开的IP地址池信息查询归属城市。地址池格式如下:城市名=起始IP,结束IP起始和结束地址按照英文逗号分隔,多个地址段采用英文分号分隔。比如:City1=1.1.1.1,1.1.1.2;City1=1.1.1.11,1.1.1.16;City2=3.3.3.3,4.4.4.4;City3=2.2.2.2,6.6.6.6一个城市可以有多个IP段,比如City1有2个IP段。城市间也可能存在包含关系,如City3的IP段包含City原创 2024-08-01 08:00:00 · 65 阅读 · 0 评论 -
华为OD机试 Java【基于访问频率和时间的文件缓存系统】
通过存储文件信息和管理缓存空间,优先删除访问次数最少且访问时间最早的文件来腾出空间。文件访问过后,会更新文件的最近访问时间和总的访问次数,当缓存不够时,按照第一优先顺序为访问次数从少到多,第二顺序为时间从老到新的方式来删除文件。当缓存空间不足以存放新的文件时,根据规则删除文件,直到剩余空间满足新的文件大小位置,再存放新文件。请设计一个文件缓存系统,该文件缓存系统可以指定缓存的最大值(单位为字节)。读取文件是从文件缓存系统中访问已存在,如果文件不存在,则不作任何操作。存储文件是把文件放入文件缓存系统中;原创 2024-07-31 08:00:00 · 59 阅读 · 0 评论 -
华为OD机试 Java【部门派遣员工】
我们需要找到最小的 k,使得编号在 [1, k] 范围内的员工可以分别满足国家 x 和 y 对员工数量的需求,并且遵守编号为 x 的倍数的员工不能派遣到 x 国,编号为 y 的倍数的员工不能派遣到 y 国。计算 [1, k] 范围内 x 和 y 的倍数个数,以及既是 x 的倍数又是 y 的倍数的个数,就能判断剩余员工数量是否足够满足需求。找到最小的 k,使得可以将编号在 [1, k] 中的员工分配给 x 国和 y 国,且满足 x 国和 y 国的需求。四个整数 x,y,cntx,cnty。原创 2024-07-30 08:00:00 · 57 阅读 · 0 评论 -
华为OD机试 Java【跳格子得分最大化】
初始化 dp 数组并从起点开始遍历,每次移除超出步长范围的元素,计算当前格子的最大得分,并从队尾移除所有小于当前得分的元素以保持单调性。从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],每个格子的分数 score[i] 在 [-10000, 10000] 区间中。格子的总长度 n 和步长 k 的区间在 [1, 100000]第三行输入最大跳的步长 k。原创 2024-07-29 08:00:00 · 79 阅读 · 0 评论 -
华为OD机试 Java【CSV 单元格引用替换】
在进行引用替换时,通过递归替换引用直至没有引用为止,过程中如果发现无效引用则抛出异常并输出-1。最终将所有处理后的单元格拼接成一行输出。6、不存在多重 ‘<>’ 的情况,一个单元只能引用一个其他单元格。将一个 csv 格式的数据文件中包含有单元格引用的内容替换为对应单元格内容的实际值。2、每个单元格的内容包含字母和数字,以及使用 ‘<>’ 分隔的单元格引用,例如:<4、引用单元格的位置不受限制,允许排在后面的单元格被排在前面的单元格引用。3、每个单元格的内容,在替换前和替换后均不超过100个字符。原创 2024-07-26 08:00:00 · 120 阅读 · 0 评论 -
华为OD机试 Java【最大运输利润计算】
使用双重循环枚举货物 A 和货物 B 的数量组合,计算每种组合的总重量和总利润。当组合的总重量恰好等于货车的额定载重时,记录该组合的总利润,并不断更新最高利润值。老李每次发车时载货总重量刚好为货车额定的载货重量 wt,车上必须同时有货物 A 和货物 B ,货物A、B不可切割。第四列输入为货物 A 的单件运费利润 pa,0 < pa < 1000。第五列输入为货物 B 的单件运费利润 pb,0 < pb < 1000。第二列输入为货物 B 的单件重量 wb,0 < wb < 10000。原创 2024-07-25 08:00:00 · 1923 阅读 · 0 评论 -
华为OD机试 Java【找到二进制中1的个数相同的最小较大数】
计算给定整数 n 的二进制表示中 1 的个数。然后,从 n + 1 开始逐个检查每个数,直到找到一个二进制表示中 1 的个数与 n 相同的数。如果使用高效方法,则通过位运算技巧找到 n 中第一个非拖尾的 0 位,将其置 1,并调整其后面的位,以保证 1 的个数相同且结果最小。输入一个正整数 n(1 ≤ n ≤ 1e9)现在求 m 的最小值。8对应二进制1000。其中1的个数都为1个。原创 2024-07-24 08:00:00 · 70 阅读 · 0 评论 -
华为OD机试 Java【精确最长匹配分词】
首先读取需要分词的句子和词库,并将句子按照标点符号分割成多个独立句子,将词库中的词汇存入HashSet中以便快速查找。然后依次处理每个句子,对于每个句子,从长到短截取子串,优先匹配最长的词汇。第二行输入中文词库 “i,love,china,ch,na,ve,lo,this,is,this,word”,词库长度限制:1 < length < 100000。给定一个连续不包含空格的字符串,该字符串仅包含英文小写字母及英文标点符号(逗号、分号、句号),同时给定词库,对该字符串进行精确分词。原创 2024-07-22 08:00:00 · 62 阅读 · 0 评论 -
华为OD机试 Java【园区参观路径计算】
创建一个二维数组 dp 来记录到达每个位置的路径数,初始化起点的路径数为1。对于每个可以参观的位置,路径数等于从上方和左方到达的路径数之和。通过逐行逐列地填充 dp 数组,最终在终点位置获得从起点到终点的所有不同路径数量。家属参观园区时,只能向右和向下园区前进,求从起始园区到终点园区会有多少条不同的参观路径。将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角;后面每一行表示该园区是否可以参观,0表示可以参观,1表示不能参观。园区某部门举办了Family Day,邀请员工及其家属参加;原创 2024-07-19 08:00:00 · 80 阅读 · 0 评论 -
华为OD机试 Java【需求开发人力安排】
输入为 M 和 requirements,M 表示需求开发时间要求,requirements 表示每个需求工作量大小,N 为 requirements长度,当前部门需要完成 N 个需求,需求用 requirements 表述,requirements[i] 表示第 i 个需求的工作量大小,单位:人月。目前要求每个月最多有2个需求开发,并且每个月需要完成的需求不能超过部门人力。这部分需求需要在 M 个月内完成开发,进行人力安排后每个月人力时固定的。对于每一组测试数据,输出部门需要人力需求,行末无多余的空格。原创 2024-07-18 08:00:00 · 83 阅读 · 0 评论 -
华为OD机试 Java【5G基站最小连接成本计算】
然后,对所有未连接的边按成本排序,使用Kruskal算法选择最小成本的边,逐步合并基站并累计成本。现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间假设光纤的成本各不相同,且有些节点之间已经存在光纤相连。注意:基站的联通具有传递性,比如基站A与基站B架设了光纤,基站B与基站C也架设了光纤,则基站A与基站C视为可以互相联通。如果给定条件,可以建设成功互联互通的5G网络,则输出最小的建设成本。原创 2024-07-16 08:00:00 · 74 阅读 · 0 评论 -
华为OD机试 Java【安全攀登评估】
例如:[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。2 * 1 + 1 * 1 + 1 * 1 = 4 的体力,按照登山路线 0 → 3 → 0 需要消耗体力12。例如上图中的数组,有3个不同的山峰,登上位置在3的山可以从位置0或者位置6开始,从位置0登到山顶需要消耗体力 1 * 2 + 1 * 2 + 2 * 2 = 8,登山时会消耗登山者的体力(整数),原创 2024-07-15 08:00:00 · 73 阅读 · 0 评论 -
华为OD机试 Java【石头剪刀布游戏赢家判定】
读取每个玩家的ID和出拳形状,过滤掉无效的出拳形状(非A、B、C),并将有效的出拳形状分别存储在三个列表中。然后,根据每种出拳形状的数量,判断是否为平局或找出赢家,并将赢家的ID按字典序输出。输出为赢家的玩家ID列表(一个或多个),每个ID一行,按字符串升序排列。例如1:三个玩家出拳分别是A,B,C。2、当本场次中有且仅有一种出拳形状优于其他出拳形状,则该形状的玩家是胜利者。解释:玩家abc1出拳为石头(A)。例如2:三个玩家出拳分别是A,B,B。出拳形状:以英文大写字母表示,A、B、C形状。原创 2024-07-11 08:00:00 · 212 阅读 · 0 评论 -
华为OD机试 Java【局域网病毒感染时间计算】
一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用 t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1。给定一个数组 times 表示一台电脑把相邻电脑感染所用的时间。使用Dijkstra算法来计算从某一台电脑开始感染其它所有电脑所需的最短时间。如图:path[i] = {i, j, t} 表示:电脑 i->j,电脑 i 上的病毒感染 j,需要时间 t。原创 2024-07-10 08:30:00 · 110 阅读 · 0 评论 -
华为OD机试 Java【生成求和二叉树】
请由二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。2行整数,第1行表示二叉树的中序遍历,第2行表示二叉树的前序遍历,以空格分割。2、生成求和二叉树:通过递归计算每个节点的左子树和右子树的和,并更新节点值。3、中序遍历输出:对生成的求和二叉树进行中序遍历,收集节点值并输出。1、构建原二叉树:通过前序遍历和中序遍历数组,递归构建原二叉树。原创 2024-07-09 08:00:00 · 99 阅读 · 0 评论 -
华为OD机试 Java【月饼分配方案计数】
我们需要将 n 个月饼分配给 m 个员工,要求每个员工至少分 1 个月饼,并且相邻员工之间分配的月饼数差距不超过 3。可以通过递归的方法来解决这个问题,确保每个员工分配到的月饼数是升序的且相邻数值之间的差不超过 3。中秋节,公司分月饼,m 个员工,买了 n 个月饼,m ≤ n,每个员工至少分 1 个月饼,但可以分多个,每一行输入m n,表示m个员工,n个月饼,m ≤ n。问有多少种分月饼的方法?输出有多少种月饼分法。原创 2024-07-08 08:15:00 · 109 阅读 · 0 评论 -
华为OD机试 Java【停车场最少车辆统计】
特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3)。整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。统计停车场最少可以停多少辆车,返回具体的数目。1、初始化计数器count为0,索引i为0。3、跳过所有空位(0),继续上述检查。4、遍历完成后,返回计数器count。整型数字字符串,表示最少停车数目。原创 2024-07-05 08:00:00 · 105 阅读 · 0 评论 -
华为OD机试 Java【计算绘制图形面积】
首行为两个整数 N 和 E,表示有N条指令,机器运行的横坐标终点值E,接下来N行 每行两个整数表示一条绘制指令x offsetY,用例保证横坐标x以递增排序的方式出现且不会出现相同横坐标x。绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。一个整数表示计算得到的面积 用例保证结果范围在0到4294967295之内。原创 2024-07-04 08:00:00 · 91 阅读 · 0 评论 -
华为OD机试 Java【寻找小朋友的好朋友】
利用单调栈来找到数组中每个元素右侧第一个比它大的元素的索引。对于每个元素,如果栈顶元素小于当前元素,则更新栈顶元素在结果数组中的索引值,并弹出栈顶元素。重复此过程,直到栈顶元素不小于当前元素,然后将当前元素及其索引入栈。在学校中,N个小朋友站成一队, 第i个小朋友的身高为height[i],第i个小朋友可以看到的第一个比自己身高更高的小朋友j,那么j是i的好朋友(要求j > i)。请重新生成一个列表,对应位置的输出是每个小朋友的好朋友位置,如果没有看到好朋友,请在该位置用0代替。原创 2024-07-01 08:00:00 · 100 阅读 · 0 评论 -
华为OD机试 Java【小明的身高排序】
首先读取小明的身高和其他小朋友的身高,然后将其他小朋友的身高存储在数组中。对数组进行排序,排序规则是先按与小明身高差的绝对值从小到大排序,如果绝对值相同,则按身高从小到大排序。小明今年升学到了小学1年级来到新班级后,发现其他小朋友身高参差不齐,然后就想基于各小朋友和自己的身高差,对他们进行排序,请帮他实现排序。第二行为n个正整数,h1 ~ hn分别是其他小朋友的身高,取值范围0<hi<200,且n个正整数各不相同。第一行为正整数 h和n,0<h<200 为小明的身高,0<n<50 为新班级其他小朋友个数。原创 2024-06-28 08:00:00 · 42 阅读 · 0 评论 -
华为OD机试 Java【按最低位排序的数组】
给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。使用 sort 方法和自定义比较器对数组进行排序。自定义比较器通过取每个整数的绝对值,并计算其最低位进行比较。读取用户输入的数组,并将输入字符串按逗号分割成字符串数组,然后将其转换为整型数组。给定一个非空数组,其元素数据类型为32位有符号整数,数组长度[1, 1000]原创 2024-06-27 08:00:00 · 98 阅读 · 0 评论 -
华为OD机试 Java【按身高和体重排序学生编号】
某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。定义一个学生类保存每个学生的编号、身高和体重信息。如果身高相同,则按体重升序排列;如果身高和体重都相同,则按原始编号升序排列。两个序列,每个序列由n个正整数组成(0 < n <= 100)。第一个序列中的数值代表身高,第二个序列中的数值代表体重。排列结果,每个数值都是原始序列中的学生编号,编号从1开始。原创 2024-06-26 08:00:00 · 92 阅读 · 0 评论 -
华为OD机试 Java【寻找最近的合法时间】
警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “HH:MM” 表示的时刻。根据警察和线人的约定,为了隐蔽,该时间是修改过的,解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。每个出现数字都可以被无限次使用。例如,“01:35”和“11:08”是合法的,“1:35”和“11:8”是不合法的。形如HH:SS的字符串,表示推理处理的犯罪时间。1.可以保证现任给定的字符串一定是合法的。形如HH:SS字符串,表示原始输入。2.最近的时刻可能在第二天。原创 2024-06-25 08:00:00 · 101 阅读 · 0 评论 -
华为OD机试 Java【跳过数字4的计费表】
将表面读数视为跳过包含数字4的数字,逐位处理每个数字。如果当前位大于或等于4,则将其减1来跳过4,然后将处理后的每位数字按照9进制权重累加,最终得到实际的费用。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。给出计费表的表面读数,返回实际产生的费用。只有一行,数字N,表示里程表的读数。一个数字,表示实际产生的费用。23再多一块钱就变为25;原创 2024-06-24 08:30:00 · 109 阅读 · 0 评论 -
华为OD机试 Java【RSA因数分解】
RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个 32 位正整数,请对其进行因数分解,找出是哪两个素数的乘积。,则输出这两个素数;如果遍历完所有可能的因数后未找到符合条件的素数对,则输出“-1 -1”。如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1, -1。一个正整数 num 0 < num < 2147483647。解题思路是首先读取输入的32位正整数。原创 2024-06-21 08:00:00 · 111 阅读 · 0 评论 -
华为OD机试 Java【连续自然数和表达式】
为了找出一个整数T的所有可能的连续自然数之和的表达式,我们可以从1开始枚举到T的一半,尝试找到所有起点和终点使得这些自然数的和等于T。如果有多种表达式,输出要求为:自然数个数最少的表达式优先输出,每个表达式中按自然数递增的顺序输出,具体的格式参见样例。一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。该整数的所有表达式和表达式的个数。原创 2024-06-20 08:00:00 · 118 阅读 · 0 评论 -
华为OD机试 Java【求数组组合最小和的k对元素】
首先初始化一个最小堆,将所有可能的元素对插入堆中,然后从堆中取出和最小的k对元素并计算它们的总和。通过堆的特性确保每次取出的都是当前最小的元素对,保证了结果的最小性。假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素,并对取出的所有元素求和,计算和的最小值。输入两行数组array1、array2,每行首个数字为数组大小size(0 < size <= 100),0 < array1[i] <= 1000,0 < array2[i] <= 1000。原创 2024-06-19 08:00:00 · 109 阅读 · 0 评论 -
华为OD机试 Java【交换字符串获取最小字符串】
先对字符串进行字典序排序,得到一个新串。如果原始字符串已经是字典序最小的,则直接返回。否则,找到第一个不同的字符位置,并在原始字符串中找到该字符最右侧的匹配位置,然后交换这两个字符,最终返回交换后的字符串。这确保了只进行一次交换即可得到字典序最小的字符串。给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。按照要求进行变换得到的最小字符串。一串小写字母组成的字符串s。s是都是小写字符组成。原创 2024-06-17 07:00:00 · 116 阅读 · 0 评论 -
华为OD机试 Java【GPU执行任务时长计算】
遍历任务数组,累加每秒新增的任务到剩余任务数中,每秒尽可能多地执行任务,并减少剩余任务数。如果剩余任务数小于或等于GPU每秒能执行的最大任务数,则在该秒内完成所有任务,否则执行最大任务数并将剩余任务留到下一秒。遍历任务数组后,如果还有剩余任务未处理完,计算剩余任务所需的秒数并累加到总时间中。为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]原创 2024-06-13 08:37:49 · 153 阅读 · 0 评论 -
华为OD机试 Java【最大最小N数和】
首先对输入的数组去重,然后检查去重后的数组长度是否小于 2 * N,如果是则返回-1。否则,将去重后的数组进行排序,取出最小的N个数和最大的N个数,检查这些数是否有重叠。如果没有重叠,则计算这些数的和并返回,否则返回-1。给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。第三行输入N,N表达需要计算的最大、最小N个数。第一行输入M, M标识数组大小。第二行输入M个数,标识数组内容。输出最大N个数与最小N个数的和。原创 2024-06-11 08:15:00 · 145 阅读 · 0 评论