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

原创 机试真题目录
**2024年8月份,华为官方已经将华为OD机考:OD统一考试(D卷)切换到 OD统一考试(E卷)** 。从参加过华为OD笔试的朋友来看,**E卷的新题非常少,大部分是A,B,C,D卷的合并题库。** 另一方面据考生反应需要双机位,也就是在牛客小程序中一直点确认,最后一步需要调试并开启您的摄像头。
2023-11-30 14:28:44
55749
24
原创 【2025年阿里控股/淘天/智能信息/菜鸟驿站秋招(算法岗)- 9月3日 -第三题(300分)- 单元格染色】(题目+思路+Java&C++&Python解析+在线测试)
题目解析与解法 该问题要求计算在n×n网格中满足特定条件的涂色方案数。核心条件是:不存在蓝色单元格位于红色单元格的左下方(即不能有蓝(i_b,j_b) ≤ 红(i_r,j_r)的偏序关系)。 关键思路: 等价条件转换:有效涂色等价于红色单元格的向下闭包(理想)内无蓝色单元格。 组合数学分析: 每个理想对应一条从(0,0)到(n,n)的路径 路径的R→D拐点数k决定方案数中的权重因子1/2^k 公式推导:总方案数为2^(n²)乘以组合数平方和,其中每项按1/2^k加权 算法实现: 预处理阶乘和逆元以快速计算组
2025-09-04 10:44:27
原创 【2025年阿里控股/淘天/智能信息/菜鸟驿站秋招(算法岗)- 9月3日 -第二题(200分)- 最佳领导人投票】(题目+思路+Java&C++&Python解析+在线测试)
这篇题解介绍了如何在Tk国最佳领导人投票中高效统计每位领导在每次投票后处于领先位置的次数。传统暴力方法效率低,无法处理大规模数据。 解题思路: 使用数组votes记录每位领导的当前票数。 维护一个max_votes变量表示当前最高票数。 使用集合leaders_with_max保存当前票数最高的领导编号。 每次投票后更新票数,若票数超过max_votes则更新最高票数并重置集合;若等于则加入集合。 最后将集合中所有领导的领先次数加一。 这种优化方法将时间复杂度从O(m×n)降到O(m),适用于大规模数据。各
2025-09-04 10:42:54
1
原创 【2025年阿里控股/淘天/智能信息/菜鸟驿站秋招(算法岗)- 9月3日 -第一题(100分)- 有趣的名字】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求统计满足特定条件的名字数量。每个名字需满足:1) 首字母大写;2) 末字母小写;3) 不能同时出现同一字母的大小写形式。算法通过位掩码高效检测条件3,遍历字符串时维护小写和大写字母的出现情况。时间复杂度为O(总字符数),空间复杂度O(1)。样例1输出3,样例2输出1。
2025-09-04 10:41:48
2
原创 【2025年华为秋招(开发岗)-9月3日-第三题(300分)- 命令关键字统计】(题目+思路+Java&C++&Python解析+在线测试)
命令格式关键字统计 问题分析 本题要求解析命令格式定义字符串,统计必选关键字及其最小出现次数。关键点在于: 命令格式中包含必选分支{}和可选分支[] 必选分支中的每个分支必须至少选择一个 需要递归分析嵌套结构,计算每个关键字在必选分支中的最小出现次数 解决思路 解析输入字符串:将输入按空格分割为令牌列表 构建语法树:使用递归下降或栈结构解析嵌套的括号结构 计算最小出现次数: 对于必选分支,取各分支结果的交集最小值 对于可选分支,结果可以为零 输出结果:按字母顺序排序必选关键字及其最小出现次数 代码实现 使用
2025-09-04 00:47:30
6
原创 【2025年华为秋招(开发岗)-9月3日-第二题(200分)- 多段数据下发】(题目+思路+Java&C++&Python解析+在线测试)
文章摘要:该题目描述了一个数通设备配置合并与删除的场景。要求实现一个能够处理配置和删除操作的程序,其中配置操作将新数据段合并到现有数据库,删除操作则移除指定数据段。程序需要维护数据段的合并状态(不可再合并、按序排列、单个数字简化表示),并支持连续多次操作。输入为若干条操作命令,输出为最终合并后的数据段结果,若数据库为空则输出0。关键点在于高效处理区间合并与删除操作,并正确格式化输出。
2025-09-04 00:45:51
6
原创 【2025年华为秋招(开发岗)-9月3日-第一题(100分)- 连通网络节点和】(题目+思路+Java&C++&Python解析+在线测试)
本文实现了一个程序,用于分析无向图中的连通网络,计算各连通网络的权重,并输出权重最大的连通网络中权重最大的节点名称及其网络权重。程序通过DFS或BFS遍历连通分量,统计每个分量的权重和及最大权重节点,最终比较所有连通分量的权重,找到最大值并输出结果。输入包含节点数、节点名称与权重、连接关系,输出为指定格式的节点名称和权重。保证不同连通网络的权重不重复,确保结果唯一。
2025-09-04 00:43:34
5
原创 【2025年华为秋招(AI)-9月3日-第三题(300分)- 大模型训练MOE场景路由优化算法】(题目+思路+Java&C++&Python解析+在线测试)
摘要:本文实现了一种基于专家概率的MOE模型路由算法。算法首先将专家均匀分配到NPU卡上形成组,每组取最大概率代表;然后选择前p个概率最高的组作为路由目标;最后从这些组中选取k个概率最高的专家作为最终路由目标。输入包括专家数n、NPU数m、目标组数p和专家数k,以及各专家概率。输出按升序排列的k个专家编号,若n不能被m整除或无法选出k个专家则报错。算法通过分组排序和优先级筛选,在保证通信效率的同时实现高效路由。关键点包括:分组处理、概率排序、边界条件检查及结果格式化输出。
2025-09-04 00:40:44
19
原创 【2025年华为秋招(AI)-9月3日-第二题(200分)- 云存储设备故障预测】(题目+思路+Java&C++&Python解析+在线测试)
设备故障预测系统摘要 本文实现了一个基于逻辑回归的云存储设备故障预测系统。系统主要功能包括: 数据预处理:处理缺失值(用均值填充)和异常值(用中位数替换),针对写入/读取次数、延迟和使用年限设定合法范围。 模型训练:采用批量梯度下降法训练逻辑回归模型,学习率0.01,迭代100次,特征包括设备使用次数、延迟和使用年限。 故障预测:对输入设备数据进行相同预处理后,使用训练好的模型预测设备状态(0正常/1故障)。 系统通过规范化数据清洗流程和标准化模型训练,实现了对设备故障的自动化预测,为云存储系统的数据迁移决
2025-09-04 00:38:44
10
原创 【2025年华为秋招(AI)-9月3日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)
摘要(149字): 本文包含20道数学与机器学习题目,涵盖概率统计、线性代数、数值计算、深度学习等领域。单选题(1-15)涉及泊松分布近似(1)、LSTM文本生成(2)、牛顿迭代法收敛性(5)、线性变换矩阵运算(7,14)等知识点。多选题(16-20)考察EM算法(16)、泊松过程性质(18)、激活函数特性(19)及多模态模型挑战(20)。重点题目解析包括:二项分布泊松近似(1选C)、牛顿法重根线性收敛(5选C)、插值误差计算(6选C)等。题目设计注重理论应用与计算验证,强调概率统计、线性变换和模型优化等核
2025-09-04 00:36:30
14
原创 【2025年得物秋招-8月31日-第三题(300分)- 系统崩溃原因】(题目+思路+Java&C++&Python解析+在线测试)
计算机内存管理中涉及堆和栈的操作模拟,本文摘要如下: 本文研究堆和栈在内存中的动态分配问题。给定初始内存状态和一系列操作(入堆、出堆、入栈、出栈),需要判断操作是否会导致系统崩溃,并在崩溃时输出错误类型及崩溃前的内存状态。系统崩溃可能由三种情况导致:1)堆或栈操作时地址越界;2)堆或栈空间不足时尝试分配内存;3)空堆或空栈时尝试弹出元素。通过维护堆指针(从低地址向高地址增长)和栈指针(从高地址向低地址增长),实时检查内存边界条件,模拟了所有操作过程。若所有操作合法,则输出"Done"和最
2025-09-01 11:38:53
128
原创 【2025年得物秋招-8月31日-第二题(200分)- 老张爬山】(题目+思路+Java&C++&Python解析+在线测试)
摘要 本文解决了一个动态规划问题,帮助老张规划最优爬山计划以最大化愉悦值。老张原则上每隔一天爬山一次,但有最多k次打破规则的机会。我们使用三维动态规划数组dp[i][j][s]表示第i天结束时已用j次机会且当天状态为s(0/1表示不爬/爬)的最大愉悦值。状态转移考虑当天是否爬山以及是否消耗规则机会。最终答案为所有可能j的最大值。算法时间复杂度O(nk),适用于给定约束条件。提供了Python、Java和C++三种实现。
2025-09-01 11:37:42
12
原创 【2025年得物秋招-8月31日-第一题(100分)- 子序列】(题目+思路+Java&C++&Python解析+在线测试)
题目要求找到一个最长的字符串 $t$,使得给定的 $n$ 个字符串 $s_1, s_2, \dots, s_n$ 都能找到一个子序列与 $t$ 等价(即字符频次相同)。若有多个解,输出字典序最小的;若无解,输出 $-1$。 解题思路: 频次统计:对每个字符串统计各字母出现次数。 取最小值:对每个字母,取所有字符串中该字母出现次数的最小值,作为最终字符串 $t$ 中该字母的出现次数。 构造结果:按字母顺序拼接这些字母,构成字典序最小的最长字符串 $t$。若所有字母的最小频次均为 0,则输出 $-1$。 算法步
2025-09-01 11:36:31
11
原创 【2025年小红书秋招-8月31日-第三题(300分)- 轰炸机】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 在一个由n个城市和n-1条道路组成的树形国家T中,K国有两种轰炸方式:1)花费x轰炸单个城市及其邻接道路;2)花费y轰炸整个连通块。要求计算摧毁所有城市的最大总花费。当x≥y时,逐个轰炸城市(n×x)最优;否则需先求树的最大独立集MIS,总花费为n×x + MIS×(y-x)。使用树形DP求MIS,时间复杂度O(n)。输入含多组测试数据,总城市数不超过2×10^5。 示例 输入: 2 3 1 3 1-2-3 5 2 1 1-2-3-4-5 输出: 7(3×1+1×4) 10(5×2+0×-1) 核
2025-09-01 11:34:39
165
原创 【2025年小红书秋招-8月31日-第二题(200分)- 品牌创意工坊】(题目+思路+Java&C++&Python解析+在线测试)
摘要:题目要求计算长度为k的丝带在不同切割方案下的合法数量,其中每段长度只能是a、b或c,且a段后不能直接接c段。采用动态规划方法,维护两个数组dp和endA,分别表示总合法方案数和以a结尾的方案数。通过状态转移方程逐次计算,最终输出所有k的合法方案数。时间复杂度为O(n),适用于大规模数据。 关键词:动态规划、状态转移、方案计数、模运算、限制条件
2025-09-01 11:33:42
10
原创 【2025年小红书秋招-8月31日-第一题(100分)- 每日一题】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算给定字符串每个前缀的所有子串中,首尾字母不相等的非包裹子串数量。通过分析,我们可以利用增量法高效求解:每个前缀的子串总数减去首尾相等的包裹子串数即为答案。维护当前字符出现频率,动态更新包裹子串数量,从而在O(n)时间内解决问题。样例输入"abda"的输出为0,1,3,5,验证了算法的正确性。代码实现简洁,适用于大规模输入。
2025-09-01 11:32:43
10
原创 【2025蚂蚁集团秋招(算法岗)-8月31日-第三题(300分)- 区间】(题目+思路+Java&C++&Python解析+在线测试)
这篇文章摘要如下: 题目要求从n个长度相同的区间中选出若干互不相交的区间,使得未被选中的区间都与至少一个选中区间相交。解法关键在于将区间按左端点排序后,预处理每个区间的覆盖范围,使用动态规划结合后缀和优化高效计算方案数。具体步骤包括:1)排序区间左端点;2)双指针预处理每个区间的可达范围;3)自右向左DP,利用后缀和数组快速求和。最终答案对998244353取模输出。三个编程语言(C++、Python、Java)的实现都遵循这一算法框架,通过双指针和动态规划优化时间复杂度至O(n)。
2025-09-01 11:31:25
347
原创 【2025蚂蚁集团秋招(算法岗)-8月31日-第二题(200分)- 多查询检索结果评估器】(题目+思路+Java&C++&Python解析+在线测试)
本文实现了一个计算NDCG@k指标的工具,用于评估信息检索与推荐系统的结果相关性。核心要点包括:1) 根据文档得分排序计算DCG@k;2) 按真实相关性排序计算IDCG@k;3) 通过DCG/IDCG得到NDCG值。处理流程为:对每个查询,取min(k,文档数)计算DCG和IDCG,当IDCG为0时NDCG记0,最后输出所有查询NDCG的平均值并保留6位小数。关键点包括处理相同得分时的稳定排序(按原索引升序)以及文档数不足k时的截断处理。
2025-09-01 11:30:30
29
原创 【2025蚂蚁集团秋招(算法岗)-8月31日-第一题(100分)- 字符中位符】(题目+思路+Java&C++&Python解析+在线测试)
题目解析:给定一个长度为n的小写字母字符串s,要求输出其字典序排序后的中位字符。中位字符定义为排序后第⌈n/2⌉个字符(从1开始计数)。 方法思路: 排序字符串:将字符串中的字符按字典序(ASCII码顺序)排序。 确定中位位置:中位位置为排序后的第⌈n/2⌉个字符,在编程中通常用索引(n-1)//2计算(从0开始计数)。 输出结果:返回排序后中位位置的字符即可。 解决代码: n = int(input()) s = input().strip() sorted_chars = sorted(s) index
2025-09-01 11:29:01
32
原创 【2025年得物秋招-8月31日-第三题(300分)- 老张爬山】(题目+思路+Java&C++&Python解析+在线测试)
这篇文章介绍了如何帮助老张制定最优爬山计划以最大化愉悦值的问题。通过动态规划方法,设计状态 dp[i][j][s] 表示第i天结束时,已使用j次打破规则机会且当天爬山状态为s时的最大愉悦值。转移方程考虑了当天不爬山、当天爬山且昨天未爬、当天爬山且昨天已爬(需消耗规则机会)三种情况。最终答案取自所有可能状态的最大值。文章提供了Python、Java和C++三种语言的实现代码,时间复杂度为O(n*k),适用于给定约束条件。
2025-09-01 11:27:48
385
原创 【2025年得物秋招-8月31日-第二题(200分)- 组队】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求将n个人分组,每组内成员间的能力差和性格差的绝对值之和不超过给定上限L,同时满足至少分成k组。通过将人视为图节点,L决定边的连接条件,问题转化为寻找最大的L使得图的连通块数≥k。利用二分法确定L的上界,每次判定通过BFS统计连通块数。算法复杂度为O(n² logV),适用于n≤500的数据规模。最终输出满足条件的最大L值。
2025-09-01 11:26:48
6
原创 【2025年得物秋招-8月31日-第一题(100分)- 特殊立方数】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算区间[a, b]内满足条件的特殊立方数个数。特殊立方数定义为:存在一个n位数M,使得M的立方数K(即K=M^3)的最后n位数字等于M本身。解题思路是枚举所有可能的M(M^3 ≤ b),计算其位数n和模数10^n,然后验证M^3 mod 10^n是否等于M。若满足且K在[a,b]区间内,则计数。时间复杂度为O(b^(1/3)),适用于给定范围。代码实现包括Python、Java和C++版本,均采用相同算法。
2025-09-01 11:25:50
10
原创 【2025年拼多多秋招-8月31日-第四题(300分)- 多多的两个序列】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 给定两个长度为n的正整数序列a和b(元素值不超过m),通过操作使a和b变得完全相同。每次操作可以选择x和y,将所有等于x的元素替换为y。求最少操作次数。 方法思路 图建模:将每个位置i的元素a[i]和b[i]视为图中的边,建立无向图。 连通块分析:使用并查集(DSU)统计图中连通块的数量。每个连通块中的元素最终需要合并为同一值。 最少操作数计算:最少操作次数等于所有出现的不同值总数减去连通块的数量。 解决代码 #include using namespace std; struct DSU { v
2025-08-31 21:02:46
18
原创 【2025年拼多多秋招-8月31日-第三题(300分)- 多多爱矩形】(题目+思路+Java&C++&Python解析+在线测试)
摘要 给定两个仅含字符'a'和'b'的字符串A和B,构造矩阵C,其中C_ij为'a'当且仅当A_i和B_j都为'a'。要求统计矩阵C中所有全'a'子矩形中元素个数恰好为k的数量。 关键思路: 将问题转化为统计A和B中连续'a'段的组合 预处理A和B中连续'a'段长的频次 利用后缀和快速计算满足条件的子矩形对 通过枚举k的约数对来统计结果 算法复杂度为O(n+m+√k),适用于大规模数据。
2025-08-31 21:02:25
28
原创 【2025年拼多多秋招-8月31日-第二题(200分)- 多多的魔法森林】(题目+思路+Java&C++&Python解析+在线测试)
摘要 该问题考察魔法森林中从节点1到所有节点的最少步行次数。每个节点有两种移动方式:免费传送(指向特定节点)或步行到相邻节点(代价1)。我们可以将其建模为带权图最短路问题,使用0-1 BFS算法高效求解。算法核心是维护双端队列,优先处理0权边(传送),后处理1权边(步行)。该算法的时间复杂度为O(n),空间复杂度O(n),适用于大规模数据。C++、Python和Java的实现均展示了这一思路,通过双端队列管理节点访问顺序,确保首次到达即为最优解。
2025-08-31 21:02:03
11
原创 【2025年拼多多秋招-8月31日-第一题(100分)- 多多的公路维修】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要: 给定总工作时间H和N个拥堵预警区间,计算多多可进行维修的连续时间段总长度。预警区间可能重叠或相邻,需合并后求未被覆盖的时间段。 关键点: 裁剪区间:将预警区间限制在[1, H]范围内。 合并区间:按左端点排序后合并重叠或相邻的区间。 计算答案:总时间H减去合并后的覆盖时间,结果非负。 示例说明: 样例1:合并[5,10]和[5,5]得[5,10],剩余1~4,输出4。 样例2:[1,3]全覆盖,输出0。 样例3:合并后覆盖1~2和4~5,剩余3,输出1。 复杂度:O(N log N)(排序主导)
2025-08-31 21:01:35
12
原创 【2025年OPPO秋招-8月31日-第三题(300分)- 回文】(题目+思路+Java&C++&Python解析+在线测试)
摘要 本文解决了一个关于将n×n棋盘转换为行列回文的最小代价问题。关键思路是将棋盘中的元素划分为四元组、二元组和单个元素,分别处理每组元素使其最终相等。通过按位异或运算和逐位统计最优解,计算出每组元素统一取值的最小代价。对于奇数n的情况,还需单独处理中央行和列的配对元素。算法的时间复杂度为O(n²),适用于n≤800的输入规模。C++、Python和Java的实现均展示了这一高效解法。
2025-08-31 16:41:10
11
原创 【2025年OPPO秋招-8月31日-第二题(200分)- 数字你好香】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要:给定一个非负整数s,求由数字1-9组成的正整数中,各位数字之和等于s的正整数总数。结果需对10^9+7取模。输入包含多组测试用例,每组一个s值,输出对应结果。例如,s=3时有4种组合(3, 12, 21, 111)。使用动态规划预处理所有可能的s值,通过递推式f[s] = f[s-1] + ... + f[s-9](边界f[0]=1)计算答案。注意s=0时结果为0。
2025-08-31 16:40:03
14
原创 【2025年OPPO秋招-8月31日-第一题(100分)- 质数整数对】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求对每个给定的质数 $n$,求解满足 $(a+b)(a-b)=n$ 的整数对 $(a,b)$。通过变量替换,将问题转化为分解 $n$ 的因数对 $(x,y)$,并分析奇偶性:当 $n$ 为奇质数时,唯一解为 $a=\frac{n+1}{2}, b=\frac{n-1}{2}$;对于 $n=2$,无解。算法时间复杂度为 $O(1)$ 每组数据,适用于大规模输入。代码实现(C++/Python/Java)直接判断 $n$ 是否为2,分别处理输出。
2025-08-31 16:39:03
32
原创 【2025年灵犀互娱秋招- 8月31日 -第三题(300分)- 叠叠高游戏】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目模拟叠叠高游戏的操作序列生成问题。给定n块编号积木和m个目标积木的排列,要求通过In(将积木从预备区移到堆叠区)和Out(丢弃堆叠区顶部积木)操作,使最终堆叠区保留目标序列。解题关键在于:对每个目标积木x,先执行足够次In直到x入栈,期间非目标积木立即执行Out丢弃。该方法保证正确性且时间复杂度为O(n)。样例验证了算法的有效性,如输入"3 2 [1,3]"输出"In,In,Out,In"。
2025-08-31 13:20:47
22
原创 【2025年灵犀互娱秋招- 8月31日 -第二题(200分)- 雷云积云游戏】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求计算从起点跳到终点云的最小跳跃次数。玩家只能跳上积云(标记为0),避开雷云(标记为1),每次可以跳1或2步。采用贪心策略:优先尝试跳2步,若不可行则跳1步。通过遍历数组,每次选择最优跳跃方案,确保总跳数最少。时间复杂度O(n),空间复杂度O(1)。示例输入输出验证了算法的正确性。
2025-08-31 13:19:51
23
原创 【2025年灵犀互娱秋招- 8月31日 -第一题(100分)- ALI输出字符串】(题目+思路+Java&C++&Python解析+在线测试)
题目要求处理多个字符串,统计每个字符串中'A'、'L'、'I'三种字符的数量,并按"A->L->I"的顺序循环输出这些字符,直到所有字符用完。如果结果为空,则输出-1。 解题思路: 统计字符:遍历字符串,分别统计'A'、'L'、'I'的出现次数。 循环输出:从'A'开始,按顺序输出字符,每输出一个字符后从下一个字符继续循环,直到所有字符用完。 处理空结果:如果没有任何字符输出,则返回-1。 样例说明: 输入包含多个字符串,每个字符串需要单独处理。 例如输入"AALL
2025-08-31 13:18:44
32
原创 【2025年网易互娱秋招- 8月31日 -第二题(200分)- 穿越双子地图】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了一个量子纠缠环境下的双地图同步寻路问题。两个角色需要在两个不同障碍分布的相同尺寸地图上同步移动,从左上角到达右下角。移动规则要求:当两图下一格均为空地时正常移动;若一侧为障碍另一侧为空地,则进入障碍方需扣除1点血量(前提是当前血量大于1);若两侧均为障碍则无法移动。 算法采用BFS策略,状态设计为当前位置及两者当前血量。通过四维访问数组避免重复状态,确保首次到达终点时即为最短路径。在相同步数的路径中,优先选择剩余血量之和最大的方案。代码实现展示了如何高效处理状态转移和最优解选择,时间复杂度主要由状
2025-08-31 13:17:44
3
原创 【2025年网易互娱秋招- 8月31日 -第一题(100分)- 任务导航】(题目+思路+Java&C++&Python解析+在线测试)
本文实现了一个自动任务寻路系统,模拟角色在无限网格上执行指令序列并完成任务点的过程。系统支持三种指令:前进(F)、右转(T)和跳跃(S)。初始位置(0,0)朝南,跳跃指令会瞬移到最近的未完成任务点并跳过后续若干指令。关键点在于维护剩余任务点集合,正确处理指令跳转逻辑,并按照曼哈顿距离和词典序选择最近任务点。算法复杂度为O(m + S操作数*n),适用于n,m≤10^3的规模。最终输出执行完所有指令后的坐标位置。
2025-08-31 13:16:47
7
原创 【2025年京东秋招- 8月30日 -第二题(200分)- 上升子序列】(题目+思路+Java&C++&Python解析+在线测试)
给定一个长度为n的排列,要求计算每个元素a_i出现在多少个不同的最长上升子序列(LIS)中。通过分解问题为左右两部分:用树状数组维护以a_i结尾的最长上升子序列长度Lend[i]和对应方案数CntL[i],以及从a_i开始的最长上升子序列长度Rbeg[i]和对应方案数CntR[i]。当且仅当Lend[i]+Rbeg[i]-1等于全局LIS长度时,a_i会被包含在LIS中,此时答案为CntL[i]*CntR[i] mod 998244353。该算法时间复杂度为O(n log n),适用于大输入规模。
2025-08-31 10:18:09
8
原创 【2025年京东秋招- 8月30日 -第一题(100分)- 定向越野】(题目+思路+Java&C++&Python解析+在线测试)
这篇文章探讨了如何计算在山区定向越野赛事中选手从起点到终点的最短通行时间。题目描述了一个包含n个打卡点和m条山路的无向图,其中设置了一条特殊索道可在两个打卡点之间瞬间往返。文章提出了将索道视为权值为0的边,并使用Floyd-Warshall算法计算出所有点对的最短路径。该方法的时间复杂度为O(n^3),在n≤100时可行。文章提供了Python、Java和C++的代码实现,展示了如何读取输入数据、构建邻接矩阵、加入特殊索道边,并执行Floyd-Warshall算法来求解最短路径。最终输出起点到终点的最短时间
2025-08-31 10:17:04
6
原创 【2025年美团秋招(算法岗)- 8月30日-第三题(300分)- 连续数列】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 给定一个长度为n的整数数组,其中元素互不相同且为某个连续区间的子集。定义子数组的权值为:将其补充为连续区间所需插入的最少元素数。要求计算所有子数组的权值之和。 关键思路 权值计算公式:权值 = (子数组最大值 - 最小值) - (子数组长度 - 1) 问题转化:总答案 = 所有子数组最大值和 - 最小值和 - n*(n+1)*(n-1)/6 高效计算:使用单调栈分别计算每个元素作为最大值/最小值时的贡献次数 复杂度:O(n)时间,O(n)空间 示例说明 样例1:输入[3,1,2],输出1(仅子数组
2025-08-31 10:15:31
16
原创 【2025年美团秋招(算法岗)- 8月30日-第二题(200分)- 线性判别分析】(题目+思路+Java&C++&Python解析+在线测试)
本文摘要:本文介绍了如何手动实现Fisher线性判别分析(LDA)用于二分类问题。该方法首先计算两类样本的均值向量,然后构建类内散度矩阵并加入正则项避免奇异。通过求解线性方程得到最佳投影方向,将测试样本投影到该方向后,根据其与两类中心的距离进行分类决策。文中提供了完整的Python实现方案,包括数据预处理、参数计算和分类预测等步骤,并给出了示例输入输出。该方法仅依赖numpy/pandas库,适用于二分类问题,通过投影变换实现特征降维和分类决策。
2025-08-31 10:14:03
17
原创 【2025年美团秋招- 8月30日-算法岗第四题(400分)/开发岗第三题(300分)- 树上最小公倍数追踪】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 给定一棵以节点1为根的树,每个节点有正整数权值和初始颜色(黑/白)。支持两种操作: 翻转某节点颜色; 查询根到某节点路径上所有黑色节点权值的最小公倍数(LCM)。 关键点: 权值范围1-100,涉及25个质数; 使用重链剖分将路径拆分为O(logn)区间; 线段树维护每个区间内黑色节点对各质数的最大指数; 预处理质数分解表和质数幂表优化计算; 每次操作复杂度O(25logn),适用于n,q≤2×1e5。 输入输出: 输入包括树结构、权值、初始颜色和操作序列; 输出每次查询的LCM模1e9+7结果。
2025-08-31 10:11:18
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人