塔子哥学算法
私信未及时回复请加v:CodingYes
备用号:ddttyy31635
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【2025年米哈游秋招-8月10日-第三题(300分)- 区间强势顶点】(题目+思路+Java&C++&Python解析+在线测试)
摘要:题目要求处理多个区间查询,每个查询需要找出区间内能到达所有其他顶点的"强势顶点"。关键是将问题转化为寻找区间内满足a[i]-b[i]最大的顶点个数。通过预处理构建线段树,维护每个区间的最大值及其出现次数,可在O(log n)时间内完成每个查询。算法总复杂度为O(n + q log n)。原创 2025-08-11 01:52:37 · 13 阅读 · 0 评论 -
【2025年米哈游秋招-8月10日-第二题(200分)- 舞台】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种高效解决环形舞台最小建造成本问题的算法。该问题需要在环形排列的n个位置中选择连续的m个位置,计算正序和逆序建造方式中的最小成本。 算法核心采用滑动窗口技术结合前缀和优化,关键创新点在于: 将环形数组扩展为线性数组处理 推导出滑动窗口时正序成本的O(1)更新公式: forward_cost = forward_cost - sum + m*a[i+m] 利用逆序成本与正序成本的关系:(m+1)*sum - forward_cost 该算法的时间复杂度为O(n),空间复杂度为O(n),能够高效处理原创 2025-08-11 01:52:00 · 4 阅读 · 0 评论 -
【2025年米哈游秋招-8月10日-第一题(100分)- 排列最小化】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了一种贪心算法,用于在有限交换次数下将排列转换为字典序最小的排列。通过建立值到位置的映射表,算法从左到右逐个位置处理,确保每个位置尽可能放置最小的可能值。每次交换后同步更新映射表以保持高效查找,直到交换次数用完或达到最优排列。该算法时间复杂度为O(n),适用于大规模数据。代码实现包括Python、Java和C++版本,均采用相同的核心逻辑。原创 2025-08-11 01:50:57 · 4 阅读 · 0 评论 -
【2025小米秋招-8月9日-第二题(200分)- 积木游戏】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 该问题要求在给定$n×m$网格上摆放$1×3$或$3×1$积木,要求积木至少一端与特殊格子重合且不重叠。最终统计所有可能的最终状态数(覆盖格子的不同分布)。通过DFS搜索所有可能的摆放序列,使用位掩码表示网格状态并存储在集合中去重。关键步骤包括:生成所有可能的积木位置,检查合法放置条件,递归搜索所有摆放可能,最终统计无法继续摆放的独立状态数。对于$n,m≤8$的约束,该方法能够有效穷举所有情况。原创 2025-08-10 11:29:17 · 240 阅读 · 0 评论 -
【2025小米秋招-8月9日-第一题(100分)- 答题闯关】(题目+思路+Java&C++&Python解析+在线测试)
题目要求将m道题目分为两轮闯关赛,使得尽可能多的选手能够晋级。每位选手能答对的题目范围是连续的,只要某轮题目完全被选手的答题范围覆盖即可晋级。 解题思路主要分为两类情况:第一种是单题分配,统计覆盖每道题的选手数;第二种是前缀后缀分配,统计同时覆盖前缀和后缀的选手数。通过差分数组和前缀和处理高效计算这两种情况的最大值。 最终结果为这两种情况中的最大值,时间复杂度为O(n+m),适用于大规模数据。输入部分读取选手的答题范围,经过差分处理和后缀前缀计算后,输出能晋级的最大选手数量。 样例输入为4名选手和8道题,最原创 2025-08-10 11:28:09 · 30 阅读 · 0 评论 -
【2025年网易秋招- 8月9日 -第四题(400分)- 篮球游戏】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种基于动态规划的算法来解决篮球接球游戏中的最优路径问题。算法通过将时间离散化处理,采用分层DP的方法,在每个时间点跟踪玩家的位置和可能的定身状态。 关键点包括: 预处理阶段计算每个球落地的时间和位置,并累计得分和标记危险球位置 使用动态规划数组f[x][k]表示在位置x、剩余定身时间k时的最大得分 状态转移考虑三种情况:移动、停留以及危险球的定身效果 初始状态允许玩家从任何位置开始 算法时间复杂度为O(2000n4),适用于题目给定的数据规模 该方法有效地解决了在移动受限和可能被定身情况下,如何原创 2025-08-10 11:26:20 · 10 阅读 · 0 评论 -
【2025年网易秋招- 8月9日 -第三题(300分)- 金矿价值】(题目+思路+Java&C++&Python解析+在线测试)
《无主星渊》游戏要求玩家在太空网格中采集金矿以获得最大总价值。该问题可以转化为路径规划与动态优化问题,其中金矿的价值会随时间衰减。解题思路包括:1) 预处理所有关键点间的最短路径;2) 枚举所有可能的金矿采集顺序;3) 模拟采矿过程并计算总价值。 具体实现使用BFS计算起点到各金矿及金矿间的最短路径,通过枚举所有排列组合模拟不同采集顺序。在每种顺序下,动态计算因移动步数导致的金矿价值衰减,最终取所有可能顺序中的最大值。该方法确保在有限金矿数量下高效求解最优解,适用于给定的网格规模约束条件。原创 2025-08-10 11:24:21 · 7 阅读 · 0 评论 -
【2025年网易秋招- 8月9日 -第二题(200分)- 战斗力极值】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求在《无主星渊》竞技宇宙中,从每支星系的战队中选出一名成员,组成一支战力极差(最大值与最小值之差)最小的终极队伍。输入包括战队数量n和每队成员数m,以及各成员的战力值。通过将全体成员按战力排序,并利用滑动窗口技术动态维护包含所有战队的窗口,计算最小极差。算法核心在于排序后高效遍历可能的组合,确保时间复杂度为O(nm log(nm))。最终输出所有可能组合中的最小战力极差值。原创 2025-08-10 11:23:05 · 6 阅读 · 0 评论 -
【2025年网易秋招- 8月9日 -第一题(100分)- 旅游团选择】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了如何根据员工的选择分配有限的旅游团名额。题目要求按照先到先得的原则,员工依次选择其偏好的旅游团,若首选团满则自动尝试次选团。实现方法为贪心算法,依次处理每个员工的请求,检查其偏好团是否还有名额,若有则分配并减少名额。最终输出每个团的参与人数及员工ID。该算法高效,时间复杂度为O(n),空间复杂度为O(n),适用于大规模员工数据。样例展示了输入输出格式及处理流程。原创 2025-08-10 11:21:50 · 4 阅读 · 0 评论 -
【2025年美团秋招(开发岗)- 8月9日-第三题(300分)- 信号模拟】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了由2×n个仪器组成的信号系统中,确保所有接收器都能接收信号所需最少信号源数量x的方差计算问题。通过分析系统形成的独立循环数量,推导出期望E[X]和方差D(X)的数学表达式。算法采用预处理逆元和前缀和技术,高效计算方差结果。关键结论是方差可表示为D(X) = E[X] - Σ(1/(2k-1)^2),其中E[X] = Σ1/(2k-1)。该算法时间复杂度为O(T + max_n),能处理大规模输入。原创 2025-08-10 11:17:56 · 6 阅读 · 0 评论 -
【2025年美团秋招(开发岗)- 8月9日-第二题(200分)- 放他一马】(题目+思路+Java&C++&Python解析+在线测试)
这篇文章摘要可以总结如下: 本文提出使用动态规划解决怪物经验值最优选择问题。通过将"已击败怪物数量模10"作为状态,设计了一个高效的线性DP算法。关键点在于击败怪物时额外经验值仅与当前击败数量模10相关,因此状态转移只需考虑模10余数变化。算法维护一个长度为10的DP数组,每次处理怪物时更新放走或击败两种选择的最优解。时间复杂度O(n),空间复杂度O(1)。文中提供了Python、Java和C++三种实现代码,并验证了在样例输入下的正确性。该解法有效处理了大规模数据(n≤2×10^5)的原创 2025-08-10 11:16:49 · 34 阅读 · 0 评论 -
【2025年美团秋招(开发岗)- 8月9日-第一题(100分)- 字符串min-15】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求将给定字符串通过最少操作轮数转换为"完全不协调"字符串,并输出字典序最小的结果。"完全不协调"字符串需满足:每个字母仅出现大写或小写形式,且所有字母均出现。操作包括插入或删除字符。解题关键在于统计字母出现情况,确定需要保留的字母形式(选择字典序更小的形式),并补全缺失字母。最终结果需满足字典序最小,可能需要在适当位置插入大写字母。样例展示了如何通过删除冗余字符和添加必要字符来达到要求。原创 2025-08-10 11:15:42 · 14 阅读 · 0 评论 -
【2025年京东秋招- 8月9日 -第二题(200分)- 01串划分】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要: 给定一个长度为n的01串和m个数字,判断能否在01串中找到m个不相交的子串,使得每个子串恰好对应一个数字的二进制表示(不含前导0)。若能找到输出"YES",否则输出"NO"。 关键点: 将每个数字转换为二进制字符串 在01串中寻找所有可能的匹配子串 确保所选子串互不重叠 时间复杂度为O(m*n),由于n≤100且m≤6,可以高效解决 示例说明: 样例1:在"10110"中可以找到"10"和"1"两原创 2025-08-10 11:14:15 · 88 阅读 · 0 评论 -
【2025年京东秋招- 8月9日 -第一题(100分)- 子序列的字典序】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 给定一个长度为n的数字序列,其中包含1~k的每个数字至少一次。要求找出一个字典序最小的子序列,使得该子序列恰好包含1~k每个数字一次。 关键点 输入:n(序列长度)、k(数字范围),以及数字序列 输出:字典序最小的子序列,包含1~k各一次 方法:使用栈结构,贪心算法确保字典序最小 时间复杂度:O(n) 空间复杂度:O(k) 示例 输入:5 3 序列:2 1 3 3 2 输出:1 3 2(字典序最小的子序列)原创 2025-08-10 11:13:13 · 9 阅读 · 0 评论 -
【2025年科大讯飞秋招- 8月9日 -第三题(300分)- 子数组长度】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求找到一个数组的最短连续子数组,使得该子数组的最小公倍数(LCM)等于整个数组的LCM。解决思路是: 计算整个数组的LCM,分解其质因数得到每个质数的最大指数需求 标记每个数组元素能覆盖哪些质数需求 使用双指针滑动窗口算法,寻找能覆盖所有质数需求的最短子数组 关键点在于将LCM问题转化为质因数覆盖问题,避免了直接计算大数LCM。算法预处理质数表,使用哈希缓存加速质因数分解,通过打标签和滑动窗口技术高效求解。时间复杂度为O(n√m),其中n是数组长度,m是元素最大值。原创 2025-08-10 11:10:20 · 136 阅读 · 0 评论 -
【2025年科大讯飞秋招- 8月9日 -第二题(200分)- 重绘次数】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种解决树节点染色问题的高效算法。给定一棵n个节点的树,每个节点初始带有d、p或?的标签,目标是通过最少次数的重绘操作(每次将?节点或现有d/p节点改为另一种状态),使得所有相邻节点标签不同。算法核心是利用树的二分图性质,通过BFS/DFS将节点分为两组,统计两种可能染色方案(组1为d、组2为p或反之)所需的修改次数。特别地,初始为?的节点必然需要1次操作。算法的时间复杂度为O(n),空间复杂度为O(n),适用于大规模数据(n≤2×10^5)。通过比较两种方案的代价,取最小值作为答案。该解法正确性原创 2025-08-10 11:09:24 · 6 阅读 · 0 评论 -
【2025年科大讯飞秋招- 8月9日 -第一题(100分)- 落叶数量】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算一棵树掉完所有叶子所需的月数,给定初始叶子数n、每月掉落量m、刮风期起始月p和持续月数q。刮风期每月掉落2m片叶子,非刮风期每月掉落m片。 算法思路是: 构造一年的掉落模式数组,其中刮风期月份掉落2m,其余月份掉落m 计算整年的总掉落量Y和可跳过的完整年数k=(n-1)//Y 跳过k整年后,剩余叶子数rem=n-k*Y 在接下来的12个月内顺序累加每月掉落量,首次超过rem时的累计月数即为答案 时间复杂度O(1),仅需处理最多12个月的数据,空间复杂度O(1)。通过整年跳跃优化后,只需线性扫描最原创 2025-08-10 11:08:23 · 8 阅读 · 0 评论 -
【2025年美团秋招(算法岗)- 8月9日-第四题(400分)- 信号模拟】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了由$2 \times n$个仪器组成的信号系统,其中仪器随机配对形成封闭信号线路。通过分析系统形成的独立循环数量,推导出最少信号源数量$x$的期望和方差计算公式。关键结论表明:方差$D(X) = E[X] - \sum_{k=1}^n \left( \frac{1}{2k-1} \right)^2$。基于此设计算法:1)预处理逆元;2)计算前缀和;3)快速响应查询。该算法时间复杂度为$O(T + \max_n)$,能高效处理大规模输入。最终结果以模分数形式输出,确保精确性。原创 2025-08-10 11:06:09 · 304 阅读 · 0 评论 -
【2025年美团秋招(算法岗)- 8月9日-第三题(300分)- 树上的路径】(题目+思路+Java&C++&Python解析+在线测试)
题目要求统计树中颜色交错的路径数量,包括单节点路径。解题思路采用树形动态规划,自底向上计算每个节点能延伸的颜色交错路径数。对于每个节点,若与子节点颜色不同,则合并路径数并累加组合数。该方法时间复杂度为O(n),适用于大规模数据。输入包括节点数、边和颜色字符串,输出为满足条件的路径总数。例如样例1输出16,包含不同长度的路径组合。原创 2025-08-10 11:04:17 · 8 阅读 · 0 评论 -
【2025年美团秋招(算法岗)- 8月9日-第二题(200分)- 均方误差】(题目+思路+Java&C++&Python解析+在线测试)
本文介绍了手动实现主成分分析(PCA)并仅保留第一主成分来压缩和重建数据的方法。首先对训练数据进行去均值处理,计算协方差矩阵(使用总体方差),然后通过特征分解获取第一主成分方向。在投影重建阶段,将测试数据投影到第一主成分上并重建,最后计算每个测试样本重建后的均方误差(MSE)。实现了完整的PCA流程,包括数据预处理、主成分提取、数据重建和误差计算,输出测试样本的MSE值(保留两位小数)组成的JSON数组。该方法适用于任意维度的数据,且不包含随机过程,确保结果可重复。原创 2025-08-10 11:03:02 · 6 阅读 · 0 评论 -
【2025年美团秋招(算法岗)- 8月9日-第一题(100分)- 小美的字符串】(题目+思路+Java&C++&Python解析+在线测试)
该题目要求对字符串进行多次字母大小写转换操作,操作针对字母表中的区间而非字符串位置。解题思路是维护两个数组last_up和last_low,分别记录每个字母最后一次被转换为大写或小写的操作编号。对于每个操作,更新对应字母区间的记录。最后,根据两个数组的时间戳决定每个字母的最终形态。这种方法避免了直接遍历字符串,提高了效率,时间复杂度为O(m*26 + n),适用于大规模输入。 摘要:题目通过维护字母的最后操作时间戳,高效处理字符串的大小写转换操作。使用两个数组分别记录每个字母最后一次被转为大写或小写的操作编原创 2025-08-10 11:01:43 · 6 阅读 · 0 评论 -
【2025年OPPO秋招-8月3日-第三题(300分)-隐秘得奇数子数组】(题目+思路+Java&C++&Python解析+在线测试)
文章摘要 题目要求统计数组区间内所有子数组和为奇数的数量。通过前缀和奇偶性分析,发现子数组和为奇数等价于其首尾前缀和的奇偶性不同。利用这一性质,可以预处理前缀和的奇偶性,并维护偶数和奇数前缀的累计个数。对于每个查询区间$[l,r]$,转换为前缀区间$[l-1,r]$,计算其中偶数和奇数前缀的数量$E$和$O$,答案即为$E×O$。该方法预处理时间复杂度为$O(n)$,每次查询为$O(1)$,总复杂度$O(n+q)$,适用于大规模数据。原创 2025-08-04 11:05:14 · 20 阅读 · 0 评论 -
【2025年OPPO秋招-8月3日-第二题(200分)-数组分家2】(题目+思路+Java&C++&Python解析+在线测试)
题目要求将一个长度为n的数组分成三个等份,最大化表达式|w1-w2| + |w2-w3|的值。通过排序和前缀和优化,我们可以高效计算最大可能值。关键思路是:将数组排序后,要么选取最大的k个元素作为一组,要么选取最小的k个元素作为一组,计算两种情况的候选值并取最大值。算法时间复杂度为O(n log n),适用于大规模数据。示例中,输入[1,2,3]时,最优分组方式得到最大值为3。原创 2025-08-04 11:04:01 · 11 阅读 · 0 评论 -
【2025年OPPO秋招-8月3日-第一题(100分)-三三三】(题目+思路+Java&C++&Python解析+在线测试)
这篇题解要求计算数组中下标为3的倍数的元素之和,并判断该和是否能被3整除。算法步骤如下: 读取数组长度n和数组元素 遍历数组,累加所有下标为3的倍数的元素(注意数组下标从1开始) 判断累加和是否能被3整除 输出"Yes"或"No" 时间复杂度为O(n),只需一次线性遍历。空间复杂度为O(1),使用常数额外空间。提供了Python、Java和C++三种实现代码。原创 2025-08-04 11:02:27 · 11 阅读 · 0 评论 -
【2025年拼多多秋招-8月3日-第四题(400分)- 登山补给】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了一个登山补给优化问题,需要从起点营地1到达终点营地n,在满足各路径最小补给需求的前提下,使终点携带的补给包最少。问题被建模为带约束的最短路问题:每个节点u的补给上限为A[u],路径u→v要求携带≥w_uv包。使用改进的Dijkstra算法求解,其中松弛操作需考虑当前携带量和补给上限是否满足路径需求。算法维护到达各节点的最小携带量,当发现更优解时更新。时间复杂度为O((n+m)logn),适用于大规模数据(n≤1e5,m≤5e5)。样例中最佳路径1→3→4→5,终点携带4包。若无法到达终点则输出-1原创 2025-08-04 10:25:26 · 19 阅读 · 0 评论 -
【2025年拼多多秋招-8月3日-第三题(300分)- 幸运年份】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种高效的算法,将给定整数序列通过最少的+1操作转换为单峰序列。单峰序列定义为严格递增后严格递减的序列。算法核心在于预处理前缀严格递增和后缀严格递减的最小操作次数,然后枚举峰值位置计算总操作数。时间复杂度为O(n),空间复杂度为O(n)。通过预计算和合理处理重复操作,能够高效求解问题。代码实现了Python、Java和C++版本,适用于大规模数据输入。样例测试验证了算法的正确性。原创 2025-08-04 10:24:23 · 73 阅读 · 0 评论 -
【2025年拼多多秋招-8月3日-第二题(200分)- 能源站状态】(题目+思路+Java&C++&Python解析+在线测试)
本文解决了一个能源站激活问题:给定n个能源站的位置和激活半径,求从任意一个能源站出发最多能激活的站点数。算法通过将站点视为图的节点,建立有向边表示激活关系,然后对每个节点进行BFS遍历,统计可达节点数并取最大值。时间复杂度为O(n^3),空间复杂度O(n^2),适用于n≤100的规模。样例测试验证了算法的正确性。原创 2025-08-04 10:23:03 · 34 阅读 · 0 评论 -
【2025年拼多多秋招-8月3日-第一题(100分)- 幸运年份】(题目+思路+Java&C++&Python解析+在线测试)
题目要求找出大于给定年份的"幸运年份"(所有数字不重复)。输入T组年份n,输出每组的大于n的最小幸运年份。解法是从n+1开始枚举,检查每位数字是否唯一,找到第一个满足条件的年份即可。时间复杂度为O(T*K),其中K为平均枚举次数。原创 2025-08-04 10:21:30 · 14 阅读 · 0 评论 -
【2025年虾皮秋招-8月3日-第三题(300分)- 电话号码的字母组合】(题目+思路+Java&C++&Python解析+在线测试)
摘要:本文介绍了如何生成电话号码数字字符串对应的所有字母组合。给定数字2-9的映射关系(如电话按键),通过回溯算法递归遍历所有可能的组合。解法使用深度优先搜索(DFS),维护当前路径并处理每个数字对应的字母,当路径长度等于输入数字串长度时保存结果。时间复杂度为O(kⁿ·n),空间复杂度为O(kⁿ·n),其中k为平均每个数字对应的字母数。提供了Python、Java和C++三种语言的实现示例。原创 2025-08-04 10:20:01 · 8 阅读 · 0 评论 -
【2025年虾皮秋招-8月3日-第二题(200分)- 配送站】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要: 问题描述了一个二维矩阵表示的配送区域覆盖情况,其中1表示已覆盖区域,0表示未覆盖区域。需要计算在最多将一个0改为1的情况下,能够形成的最大连通1区域面积。如果矩阵全为1,则直接返回1的总数。 解题思路: 使用DFS/BFS标记所有连通区域并统计各区域面积 遍历所有0点,计算将其改为1后能连接的各区域面积之和 取最大值作为结果 输入输出示例: 输入矩阵行数n和列数m,以及n×m的0/1矩阵。输出结果为可能的最大连通区域面积或当前1的总数(当全为1时)。 例如: 2×2矩阵 [[1,0],[1,0]原创 2025-08-04 10:18:58 · 8 阅读 · 0 评论 -
【2025年虾皮秋招-8月3日-第一题(100分)- 剪绳子】(题目+思路+Java&C++&Python解析+在线测试)
这道题目要求将长度为n的绳子剪成若干段后,求各段长度乘积的最大值。通过数学分析和贪心算法可以高效求解:当n≤3时,必须剪成两段,最大乘积为n-1;当n>3时,尽可能多地剪出长度为3的段,若剩余1则拆分为2×2。贪心算法的时间复杂度为O(1),空间复杂度为O(1)。示例输入8的输出为18,对应剪成3、3、2三段。原创 2025-08-04 10:16:57 · 11 阅读 · 0 评论 -
【2025年科大讯飞秋招- 8月2日 -第三题(300分)- 最小半径】(题目+思路+Java&C++&Python解析+在线测试)
本题要求找到覆盖至少 [n/2] 个点的最小圆半径,圆心必须位于坐标轴上(x轴或y轴)。采用二分法确定半径r,每次检查是否存在圆心在x轴或y轴上,使得覆盖点数满足要求。原创 2025-08-03 03:28:10 · 129 阅读 · 0 评论 -
【2025年科大讯飞秋招- 8月2日 -第二题(200分)- 拼接字符串】(题目+思路+Java&C++&Python解析+在线测试)
题目要求将给定字符串数组按任意顺序拼接后,删除一个字符后得到字典序最小的结果。解题方法包括: 枚举所有字符串的排列组合 对每种排列拼接后的字符串,找到第一个满足s[i]>s[i+1]的位置删除s[i],若无则删除末尾字符 在所有候选结果中选择字典序最小的 关键点: 使用全排列枚举所有拼接顺序 贪心策略确定最优删除位置 比较并维护最小字典序字符串 时间复杂度为O(n!×L),其中n≤8,L≤80,可以接受。原创 2025-08-03 03:26:12 · 14 阅读 · 0 评论 -
【2025年科大讯飞秋招- 8月2日 -第一题(100分)- 字符串嫁接】(题目+思路+Java&C++&Python解析+在线测试)
给定两个字符串s和t(t长度为偶数),将t的后半部分拼接到s末尾,并输出新字符串以及t的前半部分。具体步骤是:计算t的长度m,取前半部分为前m/2个字符,后半部分为剩余字符;将后半部分拼接到s后输出,再单独输出前半部分。时间复杂度为O(n+m),空间复杂度为O(n+m),适用于处理ASCII可见字符和空格组成的字符串。原创 2025-08-03 03:24:37 · 13 阅读 · 0 评论 -
【2025年京东秋招- 8月2日 -第二题(200分)- 灵动坐标系】(题目+思路+Java&C++&Python解析+在线测试)
这道题目要求计算在一个无限平面直角坐标系中,从原点出发,每次只能向上、左、右移动1个单位且不经过重复点的n步走法总数。通过分析发现,方案数满足递推关系aₙ=2aₙ₋₁+aₙ₋₂,初始条件为a₀=1,a₁=3。由于n的范围很大(1≤n≤10^9),直接递推会超时,因此采用矩阵快速幂的方法,将时间复杂度优化到O(log n)。具体实现中,构造变换矩阵[[2,1],[1,0]],通过快速幂计算其n-1次方,再与初始向量[3,1]相乘得到结果。最终答案需要对10^9+7取模。原创 2025-08-03 03:23:05 · 41 阅读 · 0 评论 -
【2025年京东秋招- 8月2日 -第一题(100分)- 银行】(题目+思路+Java&C++&Python解析+在线测试)
题目要求安排银行排队顺序,使得总办理时间最小。每个人除了基础办理时间a_i,每等待1分钟还会增加b_i分钟。通过贪心算法,按a_i/(1+b_i)升序排序后计算总时间。Python和Java代码实现中排序后累加计算,结果对1e9+9取模。样例输入2人,输出5分钟。原创 2025-08-03 03:21:43 · 23 阅读 · 0 评论 -
【2025年科大讯飞秋招- 7月26日 -第三题(300分)- 小红和红魔馆】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 给定一个正整数$n$($100 \leq n \leq 10^{18}$),需要选择或修改其若干位数字,使得最终结果是一个不含前导零的$495$的倍数。求最少需要修改的位数,并输出改变后的数。 输入输出格式 输入:一行一个正整数$n$($100 \leq n \leq 10^{18}$) 输出:两行,第一行为最少修改位数,第二行为改变后的数 解题思路 整除条件分析:495=5×9×11,因此目标数必须同时满足: 末位为0或5(整除5) 各位数字和为9的倍数(整除9) 交错位数字差为11的倍数(整除原创 2025-07-29 16:05:19 · 236 阅读 · 0 评论 -
【2025年科大讯飞秋招- 7月26日 -第二题(200分)- 局部全局填充】(题目+思路+Java&C++&Python解析+在线测试)
题目要求在一个n×m的网格中填入非零整数,使得任意2×2子网格的和等于整个网格所有数的和。通过分析,我们可以采用棋盘染色法:将网格按(i+j)的奇偶性填充1或-1。这样每个2×2子网格的和为0,而整个网格的总和也为0(因为n×m为偶数),完美满足条件。该方法简单高效,时间复杂度为O(nm),适用于给定的约束条件。原创 2025-07-29 16:04:25 · 25 阅读 · 0 评论 -
【2025年科大讯飞秋招- 7月26日 -第一题(100分)- 算01】(题目+思路+Java&C++&Python解析+在线测试)
题目要求计算01字符串每个位置左侧与当前字符不同的字符个数。通过维护两个计数器分别记录已遍历的0和1的个数,可以在线性时间内完成计算。具体步骤为:遍历字符串,若当前字符为0,则左侧不同字符数为已遍历的1的个数,并更新0的计数器;若为1则同理处理。最终输出每个位置的统计结果。该算法时间复杂度为O(n),适用于给定的输入范围。原创 2025-07-29 16:03:22 · 45 阅读 · 0 评论 -
【2025年京东秋招- 7月26日 -第二题(200分)- 独立匹配】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求判断给定无向图中的边集是否为独立匹配。独立匹配需满足两个条件:1) 边集中任意两条边不共享端点(匹配性);2) 任何不在该边集中的边最多只能与边集中的一条边共享一个端点(独立性)。算法流程为:首先检查边集的匹配性,若通过则进一步检查独立性。通过标记顶点使用情况,可以高效完成这两步验证。时间复杂度为O(qm),适用于题目给定的数据规模。代码实现了该逻辑,正确判断每个查询边集是否为独立匹配。原创 2025-07-29 16:00:36 · 357 阅读 · 0 评论