- 博客(1358)
- 收藏
- 关注

原创 2025 B卷 机试真题目录+算法分类+在线评测+视频讲解
**2024年8月份,华为官方已经将华为OD机考:OD统一考试(D卷)切换到 OD统一考试(E卷)** 。从参加过华为OD笔试的朋友来看,**E卷的新题非常少,大部分是A,B,C,D卷的合并题库。** 另一方面据考生反应需要双机位,也就是在牛客小程序中一直点确认,最后一步需要调试并开启您的摄像头。
2023-11-30 14:28:44
54454
24
原创 【2025年华为暑期实习-6月11日-第三题(300分)- 最大的矩形新游戏】(题目+思路+Java&C++&Python解析+在线测试)
题目要求在直方图中交换任意两个矩形一次后,求能勾勒出的最大矩形面积。关键思路如下: 先计算不交换时通过单调栈求得的原始最大面积; 通过"移除短板"策略,尝试合并相邻区间提升面积; 通过构造"最大值连续区间"策略,利用全局最大值扩展矩形宽度。最终取三种情况最大值作为答案。主要使用单调栈、ST表预处理区间最值和双指针技术,时间复杂度O(n log n)。例如样例1交换后前4项形成面积12的矩形。
2025-06-11 21:16:20
94
原创 【2025年华为暑期实习-6月11日-第二题(200分)- 网络整改】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 给定一棵以节点1为根的树形网络,要求移除最少数量的节点,使得剩余网络中所有边缘设备(叶子节点)到根节点的距离相同。输入包含节点数n和若干条边关系,输出最少移除的节点数。 通过计算各节点深度并动态规划分析不同目标深度下的最大保留节点数,最终确定最优解。算法时间复杂度为O(n^2),适用于n≤5000的规模。
2025-06-11 21:14:04
14
原创 【2025年华为暑期实习-6月11日-第一题(100分)- 物流运输】(题目+思路+Java&C++&Python解析+在线测试)
本题要求计算物流运输车完成所有运输任务的最短行驶路程。运输车需要从总部出发,收取所有寄件货物后返回总部扫描,再送达所有收件地址后返回总部。关键在于将任务分为两个阶段:收件阶段和送件阶段,每个阶段的最短路径等同于从根节点出发遍历所有目标节点后返回的最优路径。 解题思路: 构建树结构,以1号节点为根,预处理父节点和拓扑排序。 统计每个节点及其子树中的寄件点和收件点数量。 后序遍历节点,将子树的计数累加到父节点。 遍历所有非根节点,若其子树中存在寄件点或收件点,则累加对应边的权重。 总路程为收件和送件阶段路程之和
2025-06-11 21:11:42
14
原创 【2025年美团暑期实习(算法岗)- 5月31日-第四题(400分)- 小美的激光打印机】(题目+思路+Java&C++&Python解析+在线测试)
摘要:题目要求计算激光打印机按最优顺序打印多个封闭图形的最短时间。每个图形需选择起始点并以给定速度绘制,打印完毕后返回初始点。解法包括:1)计算各图形周长;2)枚举所有处理顺序;3)动态规划确定每步最佳起始点;4)总时间为绘制时间与移动时间之和。通过动态规划优化路径选择,确保时间最短。时间复杂度为O(n!×m^2),其中n为图形数量,m为顶点数。
2025-06-01 22:48:42
27
原创 【2025年美团暑期实习(算法岗)- 5月31日-第三题(300分)- 小美的素数数组】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求将给定序列通过合并相邻元素的操作(合并后为两者之和),使得最终序列所有元素都是素数,求不同的最终序列形态数目。使用动态规划求解:预处理素数表,计算前缀和,定义dp[i]为前i个元素的分割方案数。枚举所有可能的分割点j,若子段和为素数则累加dp[j]到dp[i]。时间复杂度为O(n^2)每组数据,总复杂度可接受。结果对10^9+7取模。
2025-06-01 22:47:25
21
原创 【2025年美团暑期实习(算法岗)- 5月31日-第二题(200分)- 市场篮子分析系统】(题目+思路+Java&C++&Python解析+在线测试)
本文摘要: 实现了一个基于关联规则的市场篮子分析系统,用于发现频繁商品组合。系统读取交易数据后,通过枚举所有商品对并计算支持度(出现频率),筛选出支持度≥0.5的频繁商品对。输出按支持度降序排列的三元组(商品1,商品2,支持度),支持度保留两位小数。示例输入包含5笔交易,输出("bread","butter",0.6)表示该组合在60%的交易中出现。系统采用组合枚举、计数统计和阈值筛选算法,适用于零售业商品关联分析场景。
2025-06-01 22:46:10
22
原创 【2025年美团暑期实习(算法岗)- 5月31日-第一题(100分)- 小美数组“数数”】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种算法,用于统计数组遍历过程中的正向和逆向传送次数。首先将数组元素与下标配对并按值排序,然后遍历排序后的相邻元素对,比较下标变化方向:若后一下标更大则记为正向传送,否则为逆向传送。该方法通过排序和线性扫描实现,时间复杂度为O(n log n),适用于大规模数据。样例验证表明,对于升序数组输出正向传送次数,降序数组则输出逆向传送次数。
2025-06-01 22:44:34
43
原创 【2025年华为暑期实习-5月28日-第三题(300分)- 爬山线路规划】(题目+思路+Java&C++&Python解析+在线测试)
摘要 本题要求计算从山底到山峰的最少移动次数,给定山的高度地图和攀爬能力值。使用广度优先搜索(BFS)算法,按照以下步骤解决: 定位关键点:找到唯一高度为0的山底起点和最高高度的山峰终点。 BFS搜索:从起点出发,每次移动时检查相邻格子是否满足高度差不超过攀爬能力值。 终止条件:到达终点时返回步数,若队列耗尽仍未到达则返回-1。 算法时间复杂度为O(N×M),适用于网格规模较大的情况。代码实现使用队列管理待访问节点,并通过访问数组避免重复计算,确保高效性。
2025-05-28 21:08:44
137
原创 【2025年华为暑期实习-5月28日-第二题(200分)- 游园线路】(题目+思路+Java&C++&Python解析+在线测试)
题目要求设计一条从指定入口到指定出口的最短游园路线。景点以邻接矩阵表示距离,需要处理多解时按字典序排序。解题思路是采用Dijkstra算法计算最短路径,同时维护路径序列以便在距离相同时选择字典序最小的路线。算法实现包括初始化距离和路径、优先队列处理邻接点、松弛更新距离和路径等步骤。最终输出经过优化后的最短路径序列。该解法能正确处理不同规模的输入,并满足题目要求的多个条件。
2025-05-28 21:08:34
41
原创 【2025年华为暑期实习-5月28日-第一题(100分)- 找到通信质量最高的基站】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要: 给定一条有N个路口的马路,每个路口设有一个通信基站,第i个基站的信号覆盖范围为[i-k, i+k]。用户应选择覆盖范围内接入人数最少的基站进行通讯。要求计算小明从0号路口出发,在每个路段(i到i+1号路口之间)的最佳基站编号。 输入: 第一行为各路口基站的接入人数数组。 第二行为基站覆盖范围k。 输出: 返回每个路段的最佳基站编号数组。若输入非法,返回-1。 关键点: 每个路段i的最佳基站需在[i-k+1, i+k]范围内选择接入人数最少的基站。 使用滑动窗口技术高效查找最小值。 处理边界条件,
2025-05-28 21:08:24
265
原创 【2025年得物暑期实习-5月25日-第三题(300分)- 障碍路径计数】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算在n×n网格中,从左上角(1,1)到右下角(n,n)的路径数,其中有两个障碍物不能经过,且只能向下或向右移动。 解题思路:使用动态规划,定义dp[i][j]表示从起点到(i,j)的路径数。状态转移方程为:若(i,j)是障碍物则dp[i][j]=0;否则dp[i][j]=(dp[i-1][j] + dp[i][j-1]) mod 998244353。边界条件为第一行和第一列的特殊处理。 复杂度分析:时间复杂度O(n²),空间复杂度O(n²)。实现时需注意障碍物标记和边界条件处理。 示例结果:如输入
2025-05-26 15:36:30
173
原创 【2025年得物暑期实习-5月25日-第二题(200分)- 数字循环移动】(题目+思路+Java&C++&Python解析+在线测试)
摘要 该题目描述了一种数字循环移动的操作过程。初始时编号为i的格子存放数字i,随后对每个x(1到n),将所有编号为x倍数的格子中的数字循环右移一位。例如,x=3时,3号格子数字移动到6号,6号移动到9号,依此类推,最后一位移动到3号。最终需输出每个格子的数字。直接模拟该过程的时间复杂度为O(n log n),适用于n≤10^5的情况。示例输入5的输出为5 3 2 1 4,输入8的输出为8 7 3 5 4 2 6 1。
2025-05-26 15:35:13
21
原创 【2025年得物暑期实习-5月25日-第一题(100分)- 机械臂攀岩】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求计算从地面(0号点)恰好到达第n个踩踏点的最少机械臂使用次数,并输出字典序最小的攀登方案。每次使用机械臂可上升1至m个点。最少次数k为⌈n/m⌉。构造方案时,初始设每次上升m点,总距离为k×m,需要减少S=k×m-n的距离。为使字典序最小,优先减少前面的步长:每次最多减少min(S,m-1),保证步长≥1。最终输出k次操作的调整后步长序列。该算法每组数据时间复杂度为O(k),适用于给定约束条件。
2025-05-26 15:33:51
25
原创 【2025年携程暑期实习 - 5月22日 -第三题(300分)- 分割数组】(题目+思路+Java&C++&Python解析+在线测试)
题目要求将一个长度为 $n$ 的数组 $a$ 分割成两个非空数组 $b$ 和 $c$,以最小化 $|f(b) - g(c)|$,其中 $f(b)$ 是 $b$ 中所有元素的和,$g(c)$ 是 $c$ 中所有元素的按位或值。通过枚举所有可能的分割点,计算每个分割点对应的 $|f(b) - g(c)|$,并取最小值。具体实现中,使用前缀和数组 $pre$ 来快速计算 $f(b)$,使用后缀或数组 $suf$ 来快速计算 $g(c)$。时间复杂度为 $O(n)$,空间复杂度为 $O(n)$。
2025-05-23 19:56:39
140
原创 【2025年携程暑期实习 - 5月22日 -第二题(200分)- 最小化数组权值】(题目+思路+Java&C++&Python解析+在线测试)
给定一个长度为n的数组{a1,a2,…,ana 1 ,a 2 ,…,a n },定义数组的权值为数组所有元素之和。你可以执行任意次以下操作,以使数组权值最小化:选择两个索引 ii 和 jj ;任意选取两个正整数 xx 和 yy ,但需满足 gcd(x,y)=gcd(ai,aj)gcd(x,y)=gcd(a i ,a j );将 ai←x,ai←ya i ←
2025-05-23 19:55:37
108
原创 【2025年携程暑期实习 - 5月22日 -第一题(100分)- 字符距离】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算三个小写字母 $a, b, c$ 到字母 $p$ 之间的距离之和。距离定义为字母表中 $p$ 到每个字母之间相差的字母数量,且字母表是线性的,‘$a$’和‘$z$’不相邻。输入包含多组测试数据,每组数据给出三个字母 $a, b, c$ 和字母 $p$,输出计算得到的距离和。 解题思路: 将字母映射到数字位置,$a$ 对应 1,$b$ 对应 2,依此类推。 计算两个字母 $x$ 和 $y$ 之间的距离,公式为 $|pos(x) - pos(y)| - 1$,若结果为负数则取 0。 对每组数据,计算
2025-05-23 19:54:03
25
原创 【2025年华为暑期实习(留学生)-5月21日-第三题(300分)- 爬山路线规划】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了如何通过广度优先搜索(BFS)算法解决登山员从山底到山峰的最短路径问题。给定一个表示山的地图的二维数组,其中每个元素代表该位置的高度,登山员每次只能向上下左右移动一格,且移动时的高度差不能超过其攀爬能力值。通过BFS,我们可以找到从山底(高度为0的唯一坐标)到山峰(最高高度的唯一坐标)的最少移动次数。如果无法到达山峰,则返回-1。文章详细描述了算法的实现步骤,并提供了Python和Java的代码示例。
2025-05-23 19:52:05
420
原创 【2025年华为暑期实习(留学生)-5月21日-第二题(200分)- 找到通信质量最高的基站】(题目+思路+Java&C++&Python解析+在线测试)
文章摘要 题目描述了一条马路上的通信基站覆盖问题。每个基站的信号覆盖范围为前后各$k$个路口,用户手机应选择连接人数最少的基站进行通讯。给定长度为$N$的数组crossroads[],表示每个路口基站的接入人数,以及覆盖范围$k$,要求输出小明在每个路段中的最佳通讯基站编号。解题思路采用滑动窗口和单调队列的方法,通过维护窗口内的最小值来快速查询最佳基站。时间复杂度为$O(N)$,空间复杂度为$O(N)$。代码实现包括Python和Java版本,处理了非法输入并输出结果。
2025-05-23 19:50:09
351
原创 【2025年华为暑期实习(留学生)-5月21日-第一题(100分)- 虚拟货币挖矿算力匹配】(题目+思路+Java&C++&Python解析+在线测试)
在虚拟货币挖矿系统中,矿工的算力值$n$需要被分配到一个“稳定算力档”,该档位的算力值必须满足以下条件:1. 小于等于$n$;2. 算力值的数位之和为质数;3. 算力值的每一位数字从左到右不递减。若不存在符合条件的算力档,则返回$-1$。解题思路包括将$n$转为字符串,通过贪心算法和回溯逐位构造符合条件的最大算力值,并利用质数预处理和可行性剪枝优化搜索过程。最终,算法在$O(1)$级别复杂度内找到符合条件的算力档或返回$-1$。
2025-05-23 19:48:50
43
原创 【2025年华为暑期实习-5月21日-第三题(300分)- 云计算服务器GPU分配】(题目+思路+Java&C++&Python解析+在线测试)
该问题要求云计算服务商在有限的GPU核数资源下,选择与哪些客户签约以最大化租金收益。服务商提供分时租用服务,客户在不同时间段按需租用GPU核数,每个核数单位时间的费用为R。服务商需确保在任何时间单位内分配的GPU核数不超过总资源M,同时选择签约客户以满足其所有时间段的需求。
2025-05-21 21:11:46
349
原创 【2025年华为暑期实习-5月21日-第二题(200分)- 地震救灾线路】(题目+思路+Java&C++&Python解析+在线测试)
该问题要求从救援物资集结点(节点0)到指定受灾乡镇(节点m)的最短路径长度。给定一个距离矩阵,表示各节点之间的距离,不相邻时距离为0。可以使用Dijkstra算法解决此问题,步骤如下: 初始化距离数组dist[],将源点0的距离设为0,其余节点设为无穷大。 使用布尔数组vis[]标记已确定最短路径的节点。 重复N+1次:在所有未访问节点中找到距离最小的节点u,标记为已访问,并更新其相邻节点的距离。 最终dist[m]即为从节点0到节点m的最短路径长度。 该算法的时间复杂度为O((N+1)^2),适用于N≤2
2025-05-21 21:11:37
280
原创 【2025年华为暑期实习-5月21日-第一题(100分)- 开发一个简单任务调度系统】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了一个简单的任务调度系统的设计与实现。该系统根据任务的优先级进行调度,优先级范围为0到99,数值越小优先级越高。高优先级任务执行完成后,低优先级任务才能执行,同等优先级的任务按照FIFO原则调度。当高优先级任务加入时,会抢占正在执行的低优先级任务。系统支持添加任务和执行任务两种操作。添加任务时,需提供任务ID、优先级和运行时间;执行任务时,系统会消耗指定时间片,并输出当前执行的任务ID,若无任务则输出“idle”。文章提供了C++和Python的实现代码,使用优先队列管理任务,确保调度策略的正确执行
2025-05-21 21:11:26
48
原创 【2025年蚂蚁集团春招-算法岗-5月18日-第三题(300分)- 小红的字符串构造】(题目+思路+Java&C++&Python解析+在线测试)
题目要求构造一个01串,使得其每个前缀的权值(长度为3的回文子序列数量)与给定数组对应。解题思路是通过贪心算法,依次决定每个位置的字符,确保每一步的增量与目标一致。具体步骤包括计算目标增量、判断选择0或1时的增量是否匹配,并更新相关计数和下标和。若过程中出现不匹配,则判定无解。代码实现中,前两位前缀的权值必须为0,否则直接输出-1。整体时间复杂度为O(n),空间复杂度为O(n)。
2025-05-18 21:32:09
40
原创 【2025年蚂蚁集团春招-算法岗-5月18日-第二题(200分)- 图像聚类】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了一个图像特征降维与聚类系统的实现方法。系统首先读取输入的三维列表表示的图像数据,将其展开为二维矩阵。接着,使用PCA算法将图像数据从多通道降维到二维空间。然后,利用K-Means算法对降维后的数据进行聚类,将数据分为3类。最后,系统输出每个像素点的聚类标签,并将其重塑为原图的高×宽格式逐行输出。代码实现中使用了Python的numpy和scikit-learn库,确保了算法的可复现性和高效性。
2025-05-18 21:22:01
33
原创 【2025年蚂蚁集团春招-算法岗-5月18日-第一题(100分)- 数组操作】(题目+思路+Java&C++&Python解析+在线测试)
题目要求将给定数组变为“好数组”,即对于所有下标$i$,满足$|a_i - i|$相等。通过每次对数组元素加1或减1,求最少操作次数。解题思路是枚举可能的$k$值($0 \le k \le n-1$),计算每个$k$下将数组变为“好数组”所需的总操作次数,取最小值作为答案。具体步骤包括:对于每个$k$,计算每个位置$i$变为$i+k$或$i-k$的代价,累加所有位置的代价,最终选择最小的总代价。时间复杂度为$O(n^2)$,适用于$n \le 1000$的情况。代码实现提供了Python、Java和C++的
2025-05-18 21:19:42
51
原创 【2025年菜鸟暑期实习(算法岗)-5月18日-第三题-300分)- 小红的red权值】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算字符串中所有“red”子序列的权值之和,其中权值定义为子序列中字符位置差的绝对值之和。通过化简权值公式,发现权值可以表示为2*(k−i),其中i和k分别是“r”和“d”的位置,且中间存在至少一个“e”。解题思路包括在线统计“r”和“d”的位置信息,并利用前缀和快速计算中间“e”的数量。最终,通过遍历字符串,累加所有符合条件的“red”子序列的权值。代码实现包括Python、Java和C++版本,时间复杂度为O(n),空间复杂度为O(n)。
2025-05-18 19:56:14
21
原创 【2025年菜鸟暑期实习(算法岗)-5月18日-第二题(200分)- 样本的Gini指数计算】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了如何计算数据集中每个特征的基尼指数,并选择基尼指数最小的特征。基尼指数是决策树算法中用于特征选择的重要指标,计算公式为加权各特征取值子集的基尼值。算法流程包括对每个特征进行分组、计算子集基尼值,并加权求和得到特征基尼指数。最终输出基尼指数最小的特征索引及其基尼值。代码实现中,通过遍历数据集,按特征值分组并统计标签分布,计算基尼指数,最终选择最优特征。时间复杂度为O(mn),空间复杂度为O(n)。
2025-05-18 19:54:28
22
原创 【2025年菜鸟暑期实习(算法岗)-5月18日-第一题(100分)- 栈元素排序】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求通过栈操作依次弹出1到n的元素,允许在每次push操作后对栈内元素进行重新排序(从栈顶到栈底按从小到大排序)。目标是找到最少的排序次数,确保能够按顺序弹出1到n。通过模拟栈的操作,每次pop时检查栈顶元素是否为当前期望的最小值,若不符合则进行排序,并记录排序次数。最终输出最少的排序次数。
2025-05-18 19:53:26
21
原创 【2025年阿里淘天暑期实习(算法岗) - 5月17日 -第三题(300分)- 连通块】(题目+思路+Java&C++&Python解析+在线测试)
文章摘要 题目要求将一棵树通过删除若干条边分割为多个连通块,使得每个连通块的节点权值之和为偶数。对于每个$k(1 \le k \le n-1)$,需要计算删除$k$条边后满足条件的方案数。若不存在满足条件的方案,则输出$0$。解题思路包括:首先通过DFS计算每个子树的权值和,统计可切边的数量;若整棵树的总权值和为奇数,则无解;否则,通过组合数计算从可切边中选择$k$条边的方案数。最终输出每个$k$对应的方案数,结果对$10^9+7$取模。
2025-05-17 21:31:34
139
原创 【2025年阿里淘天暑期实习(算法岗) - 5月17日 -第二题(200分)- 排列构造】(题目+思路+Java&C++&Python解析+在线测试)
题目要求构造一个长度为$n$的排列$p$,使得其相邻元素的绝对差值序列$a$是一个公差为$k$的等差数列。通过分析,只有当$k$为$-1$、$0$或$1$时,才存在满足条件的排列。具体构造方法如下: $k=0$:直接输出$1$到$n$的升序排列,差值序列全为$1$,公差为$0$。 $k=-1$:交替从两端取数,构造差值序列为$n-1, n-2, \dots, 1$,公差为$-1$。 $k=1$:先按照$k=-1$的方法构造排列,再将其逆序,得到差值序列为$1, 2, \dots, n-1$,公差为$1$。
2025-05-17 21:30:27
39
原创 【2025年阿里淘天暑期实习(算法岗) - 5月17日 -第一题(100分)- 小红的矩阵】(题目+思路+Java&C++&Python解析+在线测试)
给定整数 ( n ),要求构造一个 ( 2 \times n ) 的“好矩阵”,满足以下条件: 每一行都是 ( [1, n] ) 的排列; 任意相邻元素(水平或垂直)的最大公约数为 1。 通过利用连续整数互质的性质,可以构造如下矩阵: 第一行:( 1, 2, \dots, n ) 第二行:( 2, 3, \dots, n, 1 ) 这种构造保证了相邻元素互质,且时间复杂度为 ( O(n) ),空间复杂度为 ( O(n) )。代码在 C++、Python 和 Java 中均实现了该构造方法。
2025-05-17 21:29:01
40
原创 【2025年阿里淘天暑期实习(开发岗) - 5月17日 -第三题(300分)- 小苯的字符串】(题目+思路+Java&C++&Python解析+在线测试)
题目要求通过最少的修改次数,使得小苯的01串$x$满足格格串$y$的匹配规则。具体规则为:若$y_i=1$,则$x_i$和$x_{i+1}$必须不同;若$y_i=0$,则$x_i$和$x_{i+1}$必须相同。解题思路是枚举$x_1$的两种可能值(0或1),然后根据$y$串递推生成目标串$t$,并统计$x$与$t$的差异次数,取最小值即为答案。该方法的时间复杂度为$O(n)$,适用于大规模数据。代码实现提供了C++、Python和Java三种语言的版本。
2025-05-17 21:27:34
109
原创 【2025年阿里淘天暑期实习(开发岗) - 5月17日 -第二题(200分)- 记忆碎片】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求将一组记忆碎片按时间顺序排列,每次交换两块时间差不超过$k$的碎片。若时间差为1,则消耗1点精力;若时间差大于1且不超过$k$,则不消耗精力。目标是找到最少消耗的精力。当$k \geq 3$时,所有交换均可免费完成,消耗精力为0;当$k \leq 2$时,只需统计相邻时间对逆序的次数,即为所需的最小精力。算法时间复杂度为$O(n)$,适用于大规模数据。
2025-05-17 21:26:14
24
原创 【2025年阿里淘天暑期实习(开发岗) - 5月17日 -第一题(100分)- 最长字符串】(题目+思路+Java&C++&Python解析+在线测试)
题目要求构造一个字符串,使得任意两个相邻字母都不相同,并求出最长字符串的长度。给定每种小写字母的数量,通过计算总字母数 ( S ) 和最大字母数 ( M ),可以得出最长字符串的长度为 ( \min(S, 2(S - M) + 1) )。具体实现包括读取输入数据、计算 ( S ) 和 ( M ),并根据公式输出结果。代码提供了 C++、Python 和 Java 的实现示例。
2025-05-17 21:24:48
21
原创 【2025年华为暑期实习-5月14日-第三题(300分)- 救灾物资快速分配方案】(题目+思路+Java&C++&Python解析+在线测试)
在地震灾区,多个市派出车队运送物资,每个市提供的物资车数不同,灾区营地中多人排队领取物资。为尽快缩减排队长度,制定了一套发放规则:每次将当前市车队的物资分配给需求和不超过该物资的最长连续子序列,若无法分配则累加下一市车队的物资。最终统计分配次数和未分配到物资的人数。通过滑动窗口算法寻找最长子序列,时间复杂度为O(mn),在给定数据范围内可接受。
2025-05-15 10:16:25
374
原创 【2025年华为暑期实习-5月14日-第二题(200分)- 游戏中的地图穿越】(题目+思路+Java&C++&Python解析+在线测试)
给定一个大小为 ( k \times k ) 的二维矩阵 map[][],表示地形高度,角色从左上角 ((0,0)) 出发,只能向右或向下移动,且相邻节点高度差不能超过 1。角色经过每个节点时会消耗相应的体力值。要求找到从起点到矩阵右侧任意位置的最省体力路径,并输出最小体力消耗。若不存在可行路径,返回 -1;若参数不合法(如 ( k ) 超出范围或高度值不在 ([0,10]) 内),返回 -2。解题思路:参数校验:检查 ( k ) 和高度值的合法性。动态规划:定义 ( dp[i][j] ) 表示从起
2025-05-15 10:14:27
145
原创 【2025年华为暑期实习-5月14日-第一题(100分)- AI算法训练中的动态优先级经验回放】(题目+思路+Java&C++&Python解析+在线测试)
在AI算法训练中,经验回放机制通过存储和重用过去的经验数据来提高训练效率,节省算力资源。为了进一步优化,优先级经验回放根据每个经验的TD误差动态调整其采样优先级。题目要求设计一个高效的数据结构,支持插入经验、提取优先级最高的K个经验以及更新经验优先级的操作。通过使用最大堆和哈希表,结合延迟删除和版本号机制,可以高效地实现这些操作。插入和更新操作的复杂度为O(log M),提取操作的复杂度为O((K + V)log M),其中M为堆大小,V为延迟删除的节点数。整体复杂度为O(N log N),适用于N ≤ 1
2025-05-15 10:12:25
298
原创 【2025年阿里国际暑期实习(开发岗) - 5月12日 -第三题(300分)- 好联通块】(题目+思路+Java&C++&Python解析+在线测试)
实现:通过栈模拟 DFS 遍历树,避免递归深度过深,确保算法高效运行。
2025-05-15 10:10:53
100
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人