
2025B卷
文章平均质量分 93
算法刷题笔记01
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
春秋招笔试突围
春秋招笔试突围:bishipass.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2025华为ODB卷-IPv4地址转换成整数三语言题解
存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址可以转换为一个32位的整数。现以字符串形式给出一个虚拟IPv4地址,限制第1小节的范围为1128)#(0255)#(0~255),要求每个IPv4地址只能对应到唯一的整数上。如果是非法IPv4,返回invalid IP。原创 2025-07-15 11:28:34 · 165 阅读 · 0 评论 -
【2025年B卷】OD-100分-斗地主之顺子
例如:{3,4,5,6,7}和{3,4,5,6,7,8,9,10,J,Q,K,A}都是有效的顺子;而{J,Q,K,A,2}、{2,3,4,5,6}、{3,4,5,6}(少于5张)、{3,4,5,6,8}(不连续)等都不是有效的顺子。在这个游戏中,扑克牌由小到大的顺序为:3、4、5、6、7、8、9、10、J、Q、K、A、2。如果能组成顺子,则每行输出一个顺子,顺子中的每张牌用空格分开,且按照顺子首牌的大小从小到大排序。顺子是一种常见的出牌方式,其规则为:由至少5张由小到大连续递增的扑克牌组成,且不能包含2。原创 2025-06-03 21:41:29 · 89 阅读 · 0 评论 -
【2025年B卷】华为OD-100分-字符串重新排列、字符串重新排序
因此总体时间复杂度为O(n * m log m + n log n),对于题目给定的数据范围(字符串长度不超过1000),这个复杂度是可以接受的。首先,需要对每个单词内部的字母进行排序。这里可以将每个单词转换为字符数组,然后使用内置的排序函数对字符进行重新排列,最后再转回字符串。在不同编程语言中,都有对应的方法来支持自定义排序。空间复杂度为O(n),主要用于存储单词及其出现次数。请输出处理后的字符串,每个单词以一个空格分隔。输出处理后的字符串,每个单词以一个空格分隔。包括以空格分隔的若干个单词,请对。原创 2025-06-02 19:16:53 · 171 阅读 · 0 评论 -
篮球游戏(200分)
幼儿园里有一个放倒的圆桶,它是一个线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。老师可以连续放入一个或多个篮球,小朋友可以在桶左边或右边将篮球取出。如果可以按给定顺序取出篮球,输出一个字符串,表示取球操作序列。解题的关键在于理解题目描述的圆桶结构实际上就是一个双端队列,可以在右端插入元素,在两端取出元素。现在需要判断给定的取球顺序是否可能,如果可能,请给出具体的取球操作序列。第一行为一串用逗号分隔的数字,表示老师依次放入的篮球编号。第二行为一串用逗号分隔的数字,表示要检查的取出顺序。原创 2025-03-11 10:38:02 · 144 阅读 · 0 评论 -
宜居星球改造计划-(200分)
2XXX年,人类成功对火星大气进行了宜居改造分析,使火星在理论上具备了人类宜居的条件。然而,由于技术限制,无法一次性改造整个火星大气,只能通过局部处理的方式逐步进行。每个宜居区在每个太阳日可以向上、下、左、右四个方向的相邻格子同时进行扩散,自动将相邻的可改造区转变为宜居区。请计算这个待改造区域的网格中,所有可改造区是否能全部变成宜居区。输出一个整数,表示将所有可改造区变成宜居区所需的太阳日数量。首先遍历整个网格,将所有初始的宜居区(YES)的坐标加入队列,同时统计需要改造的区域数量。记录经过的太阳日数量。原创 2025-03-07 09:46:51 · 417 阅读 · 0 评论 -
书籍叠放-(200分)
如果书 A 的长度和宽度都严格大于书 B 的长度和宽度,那么就可以将书 B 放在书 A 的上面。首先,按照书的长度降序排序,如果长度相同,则按宽度升序排序。这样做的目的是确保长度这个维度是严格递减的。为了高效地找到LIS,可以使用动态规划结合二分查找的方法,也就是耐心排序算法。数组的长度就是最长递增子序列的长度,也就是我们能叠放的最多书籍数量。书籍叠放是一个有趣的问题。表示长度为 i+1 的递增子序列的最后一个元素的最小值。输出一个整数,表示最多能叠放的书籍数量。的时间,而后续的LIS查找也需要。原创 2025-03-07 09:46:00 · 53 阅读 · 0 评论 -
ODE卷-狼羊过河-(200分)
在一个河岸边,有一群羊和一群狼,以及一位农夫。农夫需要将所有的羊和狼安全地运送到对岸。然而,当羊的数量小于或等于狼的数量时,狼就会攻击羊。农夫的目标是在不损失任何羊的情况下,用最少的次数将所有羊和狼运送到对岸。需要注意的是,只计算农夫去往对岸的次数,回程时农夫不会运送任何动物。另外,当农夫在场时,无论羊和狼的数量如何,狼都不会攻击羊。这意味着在船上,即使羊的数量小于或等于狼的数量,狼也不会发动攻击。输出一个整数,表示将所有羊和狼安全运送到对岸所需的最小次数。,分别表示羊的数量、狼的数量和小船的容量。原创 2025-03-06 16:09:28 · 183 阅读 · 0 评论 -
ODE卷-矩阵匹配-200分
对可能的答案进行二分查找。初始时,左边界为 1,右边界为矩阵中的最大值。的数,在其所在的行和列之间连一条边。个数,要求任意两个数字不能在同一行或同一列。这道题目的核心在于如何高效地找到满足条件的第。,然后检查是否存在一种选择方案,使得至少有。重复步骤 2-3,直到找到最小的满足条件的。将问题转化为二分图匹配:对于每个小于等于。,分别表示矩阵的行数、列数和要求的第。使用匈牙利算法解决二分图最大匹配问题\。二分答案:猜测一个可能的答案。个整数,表示矩阵的元素。输出一个整数,表示选出的。的矩阵,需要从中选出。原创 2025-03-06 16:08:32 · 223 阅读 · 0 评论 -
ODE卷-解压报文、压缩报文还原-(200分)
为了提升数据传输的效率,通常会对传输的报文进行压缩处理。现在给定一个压缩后的报文,请返回它解压后的原始报文。压缩规则如下:输入一行字符串,表示压缩后的报文。注意:输出一行字符串,表示解压后的原始报文。样例输出1样例输入2样例输出2样例解释样例解释说明样例1k 重复3次,mn 重复2次,最终得到 kkkmnmn样例2m2[c] 解压缩后为 mcc,重复三次为 mccmccmcc数据范围原始报文长度不会超过 1000。0<n≤1000 < n \leq原创 2025-02-28 13:54:12 · 57 阅读 · 0 评论 -
ODE卷-可以处理的最大任务数(200分)
LYA 是一家公司的项目经理,她需要安排公司的多个项目任务。每个任务都有一个开始时间和结束时间。LYA 希望在给定的时间范围内安排尽可能多的任务。首先,将所有任务按照开始时间进行分组。这样可以快速找到每一天开始的任务。的任意一天处理该任务。请帮助 LYA 找出她可以处理的最大任务数。这道题目可以使用贪心算法结合优先队列(最小堆)来解决。输出一个整数,表示 LYA 可以处理的最大任务数。统计执行的任务总数,即为最大可执行任务数。个任务的开始时间和结束时间。具体来说,给定一个任务列表。行,每行包含两个正整数。原创 2025-02-27 22:54:35 · 118 阅读 · 0 评论 -
E卷-特殊的加密算法-(200分)
如果找到一条完整的路径(长度等于明文长度),就立即返回这条路径。由于我们是按照上、左、右、下的顺序搜索,第一条找到的路径就是字典序最小的路径。搜索时,每次向四个方向(上、下、左、右)尝试,如果下一个位置的数字与明文中的下一个数字匹配,就继续搜索。在搜索过程中,需要记录已经访问过的位置,避免重复使用。有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。如果有多条密文,返回字符序最小的密文。首先,遍历密码本矩阵,找到所有与明文第一个数字相匹配的位置作为起点。个数,代表密文矩阵。原创 2025-02-15 21:06:12 · 194 阅读 · 0 评论 -
E卷-MELON的难题-(200分)
每块雨花石的重量各不相同,MELON 希望两人得到的雨花石总重量相等。请你设计一个程序,帮助 MELON 确认是否能够实现平均分配,如果可以,还需要计算出最少需要拿出多少块雨花石才能实现平均分配。我们的目标是找到一种方法,将雨花石分成两组,使得两组的重量相等。如果能够平均分配,输出一个整数,表示最少需要拿出的雨花石数量,使得剩下的雨花石可以平均分配给两个人。是偶数,我们的目标就是找到一组雨花石,使其重量和恰好为。是奇数,则无法平均分配,直接返回。,表示每块雨花石的重量,,表示雨花石的总数量,原创 2025-02-15 21:04:41 · 88 阅读 · 0 评论 -
E卷-推荐多样性-(200分)
个整数,表示所有窗口中的元素,元素之间用空格分隔。输出顺序为先输出窗口 1 的元素列表,再输出窗口 2 的元素列表,以此类推。推荐系统需要从多个列表中选择元素,以实现多样性推荐。之后的行数不定,每行表示一个列表的元素,元素之间以空格隔开。个元素(窗口大小)。屏数据(窗口数量),每屏展示。,表示每个窗口需要的元素数量。,表示需要输出的窗口数量。原创 2025-02-11 21:03:19 · 78 阅读 · 0 评论 -
E卷-树状结构查询-(100分)
考虑到需要快速查找一个节点的所有子节点,使用哈希表(在Java中是HashMap,在Python中是dict)是一个很好的选择。现在,给定一系列节点和其父节点的关系,以及一个查询节点,请找出并输出该查询节点的所有下层节点。这里选择使用BFS,因为它能够按层次遍历节点,更符合题目要求的"下层节点"概念。这道题目本质上是在处理一个树结构,需要找出给定节点的所有子孙节点。行,每行包含两个由空格分隔的字符串,分别表示节点和其父节点。按字典序输出查询节点的所有下层节点,每个节点占一行。第一行输入一个正整数。原创 2025-02-11 21:02:22 · 191 阅读 · 0 评论 -
E卷-服务器广播-需要广播的服务器数量-(200分)
当两个站点之间有连接时,如果其中一个站点接收到广播,它会自动将广播传递给与之相连的站点。使用并查集的关键在于它能高效地合并集合和判断元素是否属于同一集合。在这个问题中,能快速找出所有相互连接的广播站群组。并查集是一种树形的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。现需要发送一条广播,请计算出最少需要向多少个广播站发送初始信号,才能确保所有广播站都能收到这条广播。输出一个整数,表示初始最少需要发送广播的站点数量。个用空格分隔的字符 ‘0’ 或 ‘1’。原创 2025-02-08 18:25:31 · 543 阅读 · 0 评论 -
E卷-九宫格按键输入-(200分)
九宫格按键输入是一种常见的文字输入方法。本题要求实现一个九宫格按键输入系统,该系统有英文和数字两种模式。默认为数字模式,数字模式下直接输出按键对应的数字。英文模式下,连续按同一个按键会依次出现该按键上的字母。如果输入"/"或其他字符,则当前字母输入循环中断。时间复杂度为 O(n),其中 n 是输入字符串的长度。空间复杂度也是 O(n),主要用于存储结果。关键点在于正确处理模式切换和循环中断,特别是在英文模式下连续按同一个键的情况。这道题目模拟了九宫格按键输入系统。输出一行字符串,表示屏幕显示的内容。原创 2025-02-08 18:24:52 · 189 阅读 · 0 评论 -
E卷-热点网站统计-(100分)
企业路由器的统计页面有一个功能,需要动态统计公司访问最多的网页 URL 的 top N。请设计一个算法,可以高效动态统计 Top N 的页面。这道题目要求我们实现一个动态统计系统,能够记录网页 URL 的访问次数,并随时输出访问次数最多的 Top N 个 URL。,输出一行,包含按访问次数排序的前。个 URL,用逗号分隔。对于每个输入的正整数。原创 2025-02-07 17:12:21 · 248 阅读 · 0 评论 -
E卷-最长子字符串的长度-(100分)
具体来说,我们用二进制的三位来表示 ‘I’、‘o’ 和 ‘x’ 的出现次数是奇数还是偶数,其中 1 表示奇数,0 表示偶数。由于字符串是环形的,所以最后一个 ‘x’ 和开头的 ‘l’ 是相连的。LYA 的任务是在这个环形字符串中找出一个最长的子串,使得子串中字符 ‘I’、‘o’ 和 ‘x’ 都出现偶数次(包括 0 次)。这个示例中,字符串 “bcbcbc” 本身就是最长的满足条件的子串,因为它不包含 ‘I’、‘o’ 和 ‘x’。的子串的起始位置,因为它们已经不可能是最长的满足条件的子串了。原创 2025-02-07 17:11:47 · 156 阅读 · 0 评论 -
E卷-螺旋数字矩阵-(100分)
然后从左上角开始,按顺时针螺旋的方式依次填入数字。当遇到边界或已填充的元素时,改变方向继续填充。填充完成后,输出矩阵即可。LYA 小姐最近在家无聊时发明了一种填数游戏。输出为一个矩阵,每行元素之间用单个空格分隔,最后一行无多余空格。我们可以使用一个二维数组来模拟矩阵,初始时将所有元素填充为。,从矩阵的左上角开始,按顺时针螺旋的方式依次填入从。,分别表示需要填入的数字个数和矩阵的行数。输入为一行,包含两个用空格分隔的正整数。和需要填入的数字个数。行,按要求填充矩阵。原创 2025-02-06 19:52:16 · 384 阅读 · 0 评论 -
E卷-转盘寿司-(100分)
每种价格的寿司数量无限。请问 LYA 选择每盘寿司,最终实际得到的寿司总价格分别是多少?从右向左遍历寿司价格数组,对于每个寿司。LYA 去一家寿司店吃饭,店里正在举办优惠活动。,用于存储每盘寿司实际得到的总价格,初始值为。盘寿司最近的下一盘价格更低的寿司。,找到右侧第一个价格小于它的寿司。盘寿司,店家会免费赠送距离第。盘寿司实际得到的寿司总价格。个空格分隔的正整数,表示。,那么实际得到的总价格就是。如果不存在这样的寿司。个空格分隔的正整数,第。盘寿司实际得到的总价格。,用于存储寿司的价格。原创 2025-02-06 19:51:11 · 49 阅读 · 0 评论 -
E卷-素数之积-RSA加密算法-(100分)
我们可以使用一种简单的方法来寻找给定整数的素数因子。首先,我们从2开始,检查num是否能被2整除。如果能够整除,我们将2作为一个因子,并将num除以2。然后,我们尝试3,5,7,…,直到找到两个素数因子或者num变为1。如果找到两个素数因子,我们输出它们。否则,我们输出-1 -1。位正整数,判断它是否可以表示为两个素数的乘积。如果可以,请输出这两个素数,按从小到大的顺序输出。最近她遇到了一个有趣的问题:给定一个。可以表示为两个素数的乘积,以单个空格分割,从小到大输出这两个素数。无法表示为两个素数的乘积。原创 2025-02-05 19:57:32 · 48 阅读 · 0 评论 -
E卷-游戏分组-王者荣耀-(100分)
枚举所有的二进制数,对于每个二进制数,计算两队的实力总和,并计算它们的差的绝对值,更新答案即可。本题可以通过枚举所有可能的分队方式,计算每种分队方式下两队实力差的绝对值,取最小值作为答案。每位参与者都有一个评分,代表着他的游戏水平。名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两队的实力差的绝对值。输出一个整数,表示分队后两队实力差的绝对值。名游戏爱好者参与,需要分为两队,每队。名参与者的游戏水平评分,范围在。的二进制数来表示一种分队方式,人,所以二进制数的数量为。,枚举的复杂度是可以接受的。原创 2025-02-05 19:54:56 · 6316 阅读 · 0 评论 -
E卷-恢复数字序列(100分)
对于一个由连续正整数组成的序列,可以将其拼接成一个字符串,然后将字符串中的部分字符打乱顺序。例如,序列 8 9 10 11 12 拼接成的字符串为 89101112,打乱一部分字符后可能得到 90811211,其中原来的正整数 10 被拆成了 0 和 1。现给定一个按上述规则得到的打乱字符的字符串,请将其还原成连续正整数序列,并输出序列中最小的数字。这道题的核心在于如何从打乱的字符串中还原出原始的连续正整数序列。输出一个整数,表示还原后的连续正整数序列中最小的数字。原创 2024-12-30 20:14:55 · 199 阅读 · 0 评论 -
E卷-分披萨(100分)
为了公平起见,两人商量了一个取披萨的规则:从K小姐开始,轮流取披萨。除了第一块披萨可以随意选取外,其余的披萨必须从上一个人取完的披萨的相邻位置开始取。A先生每次都会选择剩下披萨中最大的一块,而K小姐知道A先生的这个特点。现在给定每块披萨的大小,请问K小姐最多能够取到多少大小的披萨呢?K小姐和A先生到披萨店点了一份圆形披萨,并嘱咐店员将披萨切成大小相同的偶数块。块披萨时,K小姐能够取到的最大披萨大小之和。块披萨时,K小姐能够取到的最大披萨大小之和。,那么只剩下一块披萨,K小姐直接取走,因此。原创 2024-12-26 13:38:59 · 101 阅读 · 0 评论 -
E卷-关联子串(100分)
但是,考虑到字符串长度可能达到 100000,这种方法显然会导致时间复杂度过高。实际上,这个问题可以通过滑动窗口(也称为尺取法)来高效解决。中每个字符的出现次数,可以使用一个长度为 26 的数组。中的字符经过排列组合后的字符串中,有一个是。指针扩大窗口,同时更新当前窗口中字符的计数。的长度时,检查窗口中的字符是否恰好包含了。的组合子串,请返回最小的起始位置。中所有字符,且字符数量一致即可。,因为使用了固定大小的数组来计数。的关联子串,请返回子串在。的所有排列,只需要确保。上滑动,维护一个窗口。原创 2024-12-26 13:38:28 · 54 阅读 · 0 评论 -
E卷-荒岛求生(100分)
战斗力较强的人能够活下来,但会损失与对手相同的战斗力。这种方法的时间复杂度是 O(N),其中 N 是输入数组的长度。解题的关键 在于理解人们相遇和决斗的规则,并找到一种高效的方法来处理这些相遇和决斗。每个整数的正负表示逃生方向(正表示向右逃生,负表示向左逃生),绝对值表示战斗力。可以想象所有人都在向左移动,这样就可以从左到右遍历输入数组,依次处理每个人的情况。空间复杂度是 O(N),最坏情况下(所有人都向右逃生)栈会存储所有的人。最后,栈中剩余的人数加上成功向左逃生的人数,就是最终的答案。原创 2024-12-26 13:37:25 · 83 阅读 · 0 评论 -
E卷-查找接口成功率最优时间段(100p)
她将一段时间内的接口失败率表示为一个数组,数组中每个元素都是单位时间内的失败率数值,取值范围为。如果存在多个最长时间段,则输出多个下标对,下标对之间用空格分隔,并按照下标对的起始下标从小到大排序。最后,将满足条件的最长区间下标对按要求格式输出即可。第二行为一个整数数组,表示各个时间段的失败率,数组元素之间用空格分隔。,表示某个时间段内可以容忍的平均失败率,即平均失败率小于等于。,计算该区间的元素和以及区间长度。的最长连续时间段的数组下标对,格式为。,则更新最长区间长度以及对应的区间下标。原创 2024-12-09 18:47:51 · 192 阅读 · 0 评论 -
E卷-货币单位换算(100分)
每条记录可能包含单独的元、单独的分,或者元与分的组合。要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。元和分的换算关系都是1:100,如下:1CNY=100fen(1元=100分)输出一个整数,表示将所有货币转换成人民币分(fen)后的汇总结果。对于每一条货币记录,先将其转换为该货币的最小单位(如分、cents等),然后根据汇率转换为人民币分。这道题目的核心在于正确解析输入的货币字符串,并根据不同货币的汇率进行转换。行,每行包含一条货币记录,格式为数字加单位。原创 2024-12-09 18:47:00 · 97 阅读 · 0 评论 -
E卷-选修课
可以使用字典(哈希表)来存储学生信息,以学号为键,值包含班级、两门课的成绩等信息。这个解法的时间复杂度主要来自于排序步骤,为 O(nlogn),其中 n 是学生的总数。考虑到题目给出的数据范围(学生数不超过 2000),这个复杂度是可以接受的。现有两门选修课,每门选修课都有一部分学生选修,每个学生都有选修课的成绩。输出同时选修了两门选修课的学生的学号。每行数据中,学生之间以英文分号分隔,每个学生的学号和成绩以英文逗号分隔。使用另一个字典,以班级编号为键,值为该班级所有同时选修两门课的学生列表。原创 2024-12-07 10:45:14 · 220 阅读 · 0 评论 -
E卷-预订酒店
他在网上搜索到了各种价位的酒店,这些酒店的价格存储在一个长度为。,分别表示酒店数量、需要筛选的酒店数量和卢小姐的心理价位。),并按照价格从低到高的顺序打印这些酒店的价格。现在,请你帮助卢小姐从这些酒店中筛选出。个酒店的价格,按照从低到高的顺序排列。这道题目的核心是找出最接近目标价格的。个酒店进行排序,时间复杂度为。小的差值,这样就可以在。的时间复杂度内完成选择。对于排序,只需要对选出的。个整数,表示筛选出的。,表示每家酒店的价格。,对于给定的数据范围()来说是可以接受的。原创 2024-12-07 10:44:43 · 379 阅读 · 0 评论 -
E卷-分割数组的最大差值
的整数组合在一起所需的最少交换次数。组合在一起指满足条件的数字相邻,不要求相邻后在数组中的具体位置。这道题目可以使用滑动窗口的方法来解决。核心思想是找到一个连续的子数组,使得这个子数组包含了所有小于。我们只需要遍历一次数组,同时滑动窗口也只需要移动。),这个算法是高效的,可以在合理的时间内得出结果。第一行输入一个整数数组,数组元素之间用空格分隔。这个数就是将该窗口内的元素全部变为小于。输出一个整数,表示最少交换次数。的数,并且需要交换的次数最少。就是我们滑动窗口的大小。的数所需的交换次数。原创 2024-12-07 10:44:08 · 148 阅读 · 0 评论 -
E卷-最少交换次数
的整数组合在一起所需的最少交换次数。组合在一起指满足条件的数字相邻,不要求相邻后在数组中的具体位置。这道题目可以使用滑动窗口的方法来解决。核心思想是找到一个连续的子数组,使得这个子数组包含了所有小于。我们只需要遍历一次数组,同时滑动窗口也只需要移动。),这个算法是高效的,可以在合理的时间内得出结果。第一行输入一个整数数组,数组元素之间用空格分隔。这个数就是将该窗口内的元素全部变为小于。输出一个整数,表示最少交换次数。的数,并且需要交换的次数最少。就是我们滑动窗口的大小。的数所需的交换次数。原创 2024-12-07 10:43:37 · 136 阅读 · 0 评论 -
E卷-IPv4地址转换成整数
这道题目要求将虚拟 IPv4 地址转换为整数,同时需要处理各种非法输入的情况。这个解法的时间复杂度是 O(n),其中 n 是输入字符串的长度。现给出一个以字符串形式表示的虚拟 IPv4 地址,要求将其转换为对应的整数。输出一行,为转换后的整数或 “invalid IP”(如果输入非法)。如果输入的 IPv4 地址非法,则返回 “invalid IP”。有一种虚拟 IPv4 地址,由 4 个小节组成,每节的范围为。输入一行,为虚拟 IPv4 地址格式的字符串。最后,返回计算得到的整数结果。原创 2024-12-07 10:43:06 · 104 阅读 · 0 评论 -
E卷-单向链表中间节点-100分
行,每行包含三个部分,格式为:节点地址 节点值 下一个节点地址。其中,节点地址为 5 位数字,节点值为整数,下一个节点地址为 5 位数字或 -1(表示空指针)。想象一下,如果快指针的速度是慢指针的两倍,那么当快指针走完全程时,慢指针正好走了一半。可以使用哈希表存储节点信息,键为节点地址,值为节点对象(包含值和下一个节点地址)。给定一个单向链表,求链表中间节点的值。遍历结束后,慢指针指向的就是中间节点(偶数个节点时是偏右的中间节点)第一行包含两个整数,分别表示链表头节点的地址和后续输入的节点数。原创 2024-12-06 14:42:11 · 175 阅读 · 0 评论 -
E卷-数字涂色-100分
为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。这个方法之所以有效,是因为它保证了每种颜色的最小数一定是该颜色中所有数字的因子。同时,由于是按照升序遍历的,所以也保证了使用的颜色数量是最少的。这样做的好处是,从左到右遍历时,当前数字一定是未处理数字中最小的。遍历排序后的数列,对于每个还没有被着色的数字,将它作为一种新颜色的最小数。然后,继续向右遍历,将所有能被这个最小数整除的数字都标记为这种颜色。个用空格分隔的正整数,表示黑板上各个数字的值。原创 2024-12-06 14:41:38 · 385 阅读 · 0 评论 -
E卷-最大值-100分
我们可以在最后检查一下,如果结果的第一个字符是 ‘0’,就直接返回 “0”。解决这个问题的关键是理解:对于两个数 a 和 b,如果 ab > ba,那么 a 应该排在 b 前面。这里的 ab 和 ba 指的是将 a 和 b 拼接成的数字。如果按照数字大小排序,我们会得到 330,但实际上 303 才是更大的数。乍一看,我们可能会认为直接按照数字大小排序就可以了,但实际上这样做是不对的。给定一组非负整数,需要重新排列这些整数的顺序,将它们拼接成一个最大的整数。输入包含一行,为空格分隔的若干个非负整数。原创 2024-12-06 14:41:03 · 77 阅读 · 0 评论 -
E卷-计算网络信号200分
在一个网格地图中,网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透。现需要计算某个位置的网络信号值。使用 BFS 的原因是它能够保证在遍历到某个位置时,该位置的信号强度是最大的。这是因为 BFS 是按照距离信号源的远近顺序进行遍历的。网络信号向上下左右相邻的网格传播时,强度衰减 1。要求输出指定位置的网络信号值。关键在于理解信号的传播方式和如何处理阻隔物。输出一个整数,表示指定位置的网络信号值。如果网络信号未覆盖到该位置,输出 0。个用空格分隔的整数,表示网格地图的状态。,表示网格地图的行数和列数。原创 2024-12-06 14:40:37 · 265 阅读 · 0 评论 -
【OD-支持在线评测】- IPv4地址转换成整数(100分)
这道题目要求将虚拟 IPv4 地址转换为整数,同时需要处理各种非法输入的情况。这个解法的时间复杂度是 O(n),其中 n 是输入字符串的长度。如果分割后的小节数不是 4,则直接返回 “invalid IP”。现给出一个以字符串形式表示的虚拟 IPv4 地址,要求将其转换为对应的整数。输出一行,为转换后的整数或 “invalid IP”(如果输入非法)。如果输入的 IPv4 地址非法,则返回 “invalid IP”。有一种虚拟 IPv4 地址,由 4 个小节组成,每节的范围为。原创 2024-11-26 21:08:33 · 133 阅读 · 0 评论 -
【OD-支持在线评测】周末爬山(200分)
K小姐准备在周末去爬山锻炼。山地图用二维数组表示,其中 0 代表平地,1 到 9 表示山的高度。K小姐每次爬山或下山时,高度差不能超过。输出两个整数,以空格分隔。第一个整数表示K小姐能爬到的最高峰高度,第二个整数表示到达该最高峰的最短步数。他每次只能向上、下、左、右四个方向之一移动一格。位置出发,请计算他能爬到的最高峰高度以及到达该高峰的最短步数。如果没有可以爬的更高的山峰,则高度和步数都输出 0。如果存在多个相同高度的最高峰,输出步数较短的那个。个整数(以空格分隔),表示。原创 2024-11-02 07:30:53 · 230 阅读 · 0 评论 -
【OD-支持在线评测】电脑病毒感染(200分)
K小姐是一家公司的网络管理员,最近她发现公司内部的局域网出现了电脑病毒。经过调查,K小姐了解到病毒是从某一台电脑开始传播的,通过电脑之间的网络连接,病毒会感染其他电脑。从初始感染病毒的电脑出发,将其到其他所有电脑的最短感染时间求出来,然后取其中的最大值即可。她想知道,最少需要多长时间,病毒才能感染所有的电脑。如果无法感染所有电脑,则输出。输出一个整数,表示病毒传播到所有电脑所需的最短时间。如果无法感染所有电脑,则输出。之间存在网络连接,如果电脑。,表示电脑数量和网络连接数量。,表示最初感染病毒的电脑编号。原创 2024-11-02 07:29:22 · 113 阅读 · 0 评论