
算法
算法
seabirdssss
这个作者很懒,什么都没留下…
展开
-
华为机试牛客刷题之HJ58 输入n个整数,输出其中最小的k个
第二行输入 n 个整数 a1 ,a2 ,…,an (1≦ai ≦10^4 ) 代表给定的数字。第一行输入两个整数 n,k(1≦n≦1000;对于输入的 n 个整数,升序输出其中最小的 k 个。在一行中升序输出最小的 k 个整数。升序排序后取前k个是对的。原创 2025-03-24 21:58:15 · 223 阅读 · 0 评论 -
华为机试牛客刷题之HJ59 找出字符串中第一个只出现一次的字符
对于给定的字符串,找出第一个只出现一次的字符。如果不存在,则输出 −1。原创 2025-03-24 21:07:35 · 422 阅读 · 0 评论 -
华为机试牛客刷题之HJ5 进制转换
在本题中,十六进制数的格式为:0x 开头,后跟若干个十六进制数字( 0-9 和 A-F )。其中,A-F 依次代表 10−15。思路是用switch语句处理每个字符的值,从0到F,每个对应的数值乘以16的指数次方,累加到sum中。保证 s 转化得到的十进制数 x 的范围为 1≦x≦2^31 −1。在一行上输入一个十六进制数 s ,代表待转换的十六进制数。在一行上输出一个整数,代表 s 对应的十进制数。对于给定的十六进制数,输出其对应的十进制表示。处理大小写字母、避免精度丢失和整数溢出。原创 2025-03-15 20:26:55 · 524 阅读 · 0 评论 -
华为机试牛客刷题之HJ14 字符串排序
思路是读取输入的多行字符串,首行为数字表示后续字符串数量,剩余行存入数组。从字符串的第一个字符开始逐个比较,直到找到第一个不同的位置,通过比较这个位置字符对应的(A<⋯<Z<a<⋯<z )得出字符串的大小,称为字典序比较。此后 n 行,每行输入一个长度 1≦length(s)≦100 ,由大小写字母混合构成的字符串 s ,代表一个单词。对于给定的由大小写字母混合构成的 n 个单词,输出按字典序从小到大排序后的结果。输出 n 行,每行输出一个字符串,代表排序后的结果。第一行输出字典序最小的单词。原创 2025-03-10 22:24:18 · 230 阅读 · 0 评论 -
华为机试牛客刷题之HJ40 统计字符
字符串由 ASCII 码在 32 到 126 范围内的字符组成。思路是使用正则表达式来替换不需要的字符,然后通过 length() 来计算各类字符的数量。对于给定的由可见字符和空格组成的字符串,统计其中英文字母、空格、数字和其它字符的个数。在一行上输入一个长度为 1≦length(s)≦1000 的字符串。第一行输出一个整数,代表字符串中英文字母的个数。第四行输出一个整数,代表字符串中其它字符的个数。第二行输出一个整数,代表字符串中空格的个数。第三行输出一个整数,代表字符串中数字的个数。原创 2025-03-10 22:12:12 · 293 阅读 · 0 评论 -
华为机试牛客刷题之HJ60 查找组成一个偶数最接近的两个素数
思路是先通过 for 循环检查 n 是否能被 2 到 sqrt(n) 范围内的数整除。寻找小于 k 的所有素数。然后使用双指针法寻找和为 k 的素数对,并且选择差值最小的那一对素数。我们可以证明,a,b 一定存在,从小到大输出满足条件的素数对。输入一个整数 n(4≦n≦10^3 )。第一行输出一个整数 a,代表满足条件的素数对中的较小者。第二行输出一个整数 b,代表满足条件的素数对中的较大者。原创 2025-03-10 22:05:58 · 318 阅读 · 0 评论 -
华为机试牛客刷题之HJ10 字符个数统计
对于给定的字符串,统计其中的 ASCII 在 0 到 127 范围内的不同字符的个数。思路是通过遍历字符串的每个字符,并将其添加到HashSet中,集合会自动处理重复字符。原创 2025-03-10 21:13:03 · 142 阅读 · 0 评论 -
华为机试牛客刷题之HJ87 密码强度等级
是检查整个字符串是否只包含一个数字,这可能不符合实际需求,应该检查是否有至少一个数字,并且数字的数量是否多于一个。比如,正确的做法应该是统计数字的数量,而不仅仅是是否存在。”`,这表示整个字符串只有一个字符,并且是特殊字符,这可能不符合实际需求,应该是检查至少存在一个特殊字符,并且数量多于一个时加分更多。以下是优化后的代码。10 分:密码里的字母全都是小(大)写字母。(ASCI码:0x21-0x2F)(ASCI码:0x3A~0x40)(ASCI码:0x5B-0x60)(ASCI码:0x7B-0x7E)原创 2025-03-02 17:53:19 · 841 阅读 · 0 评论 -
华为机试牛客刷题之HJ100 等差数列
思路是直接用等差数列求和公式,如果不记得可以推导出来,实在没印象的话可以用循环把每一项加起来。对于首项为 2,公差为 3 的等差数列,求前 n 项的和。输入一个整数n (1 ≦n≦ 103)输出一个整数,代表前n 项的和。原创 2025-03-02 01:08:57 · 187 阅读 · 0 评论 -
华为机试牛客刷题之HJ85 最长回文子串
对于每个中心,分别判断奇数长度回文(中心为单个字符)和偶数长度回文(中心为两个字符之间)。不过我一开始只考虑了偶数长度的回文,漏掉了奇数的。在一行上输入一个长度为 1 ≤ len(s)< 350、仅由小写字母构成的字符串 s。子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。一个字符串被称作回文串,当且仅当这个字符串从左往右读和从右往左读是相同的。对于给定的由小写字母构成的字符串 s,求出其最长回文子串的长度。输出一个整数,表示字符串s的最长回文子串的长度。原创 2025-02-28 22:42:21 · 535 阅读 · 0 评论 -
华为机试牛客刷题之HJ86 求最大连续bit数
思路是先使用除以 2 的方式将十进制数转换为二进制数;再将二进制字符串转换为StringBuffer,然后逐个字符处理;用单个变量记录前一个状态。对于给定的十进制整数n,求解其二进制表示中,最长连续1 段的长度。输出一个整数,表示n 的二进制表示中,最长连续1 段的长度。输入一个十进制整数„(1 ≦n≦5x 105)原创 2025-02-27 00:46:51 · 126 阅读 · 0 评论 -
代码随想录之1143.最长公共子序列
在做完[华为机试牛客刷题之HJ75 公共子串计算](https://blog.youkuaiyun.com/seabirdssss/article/details/145889505)后发现了1143.最长公共子序列,看了代码随想录的视频解释后还是不能理解`dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);`这段代码,于是把代码喂给deepseek后根据深度思考内容得到了理解,在这里分享一下:原创 2025-02-26 22:07:54 · 908 阅读 · 0 评论 -
华为机试牛客刷题之HJ75 公共子串计算
如果字符串 α 的一个子串 a’与字符串b的一个子串b 完全相等,那么子串 α’,b’是字符串a,b的一个公共子串。第一行输入一个长度为 1 <= len(s)<= 150、仅由小写字母组成的字符串 s。第二行输入一个长度为 1 <= len(t)<= 150、仅由小写字母组成的字符串 t。子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。对于给定的两个字符串s和t,你需要找出它们的最长公共子串的长度。输出一个整数,代表s和t的最长公共子串的长度。个字符和字符串2的第。原创 2025-02-26 21:55:57 · 1116 阅读 · 0 评论 -
华为机试牛客刷题之HJ76 尼科彻斯定理
观察实例可得出由连续奇数组成的数列中的数字个数是正整数 n,且第一个数是n+(n-1)^2;因此根据用户输入的整数 a,生成一个特定格式的数学表达式即可。尼科彻斯定理,又称为斐波那契数列定理,指的是对于任意正整数 n,存在一个由连续奇数组成的数列,使得该数列的和等于 n 的立方。在一行上输出一个字符串,用于描述这个数列中的元素从小到大相加的形式。现在,给定一个正整数”,请输出这个数列中的元素从小到大相加的形式。我们可以证明答案是唯一的。输入一个整数 n(1 ≤ n ≤ 100)代表需要输出的数列的和。原创 2025-02-25 22:40:34 · 357 阅读 · 0 评论 -
华为机试牛客刷题之HJ11 数字颠倒
对于给定的非负整数 n ,将其以字符串的形式颠倒后输出。这意味着,如果 n 的末尾含 0 ,那么返回的字符串开头也需要含 0。一样:和通过双指针(left 和 right)交换字符,完成字符串反转。在一行上输入一个非负整数 n(0≦n<2^30) 代表给定的整数。在一行上输出一个字符串,代表颠倒后的数字。原创 2025-02-25 21:46:17 · 237 阅读 · 0 评论 -
华为机试牛客刷题之HJ1 字符串最后一个单词的长度
描述对于给定的若干个单词组成的句子,每个单词均由大小写字母混合构成,单词间使用单个空格分隔。输出最后一个单词的长度。在一行上输入若干个字符串,每个字符串代表一个单词,组成给定的句子。除此之外,保证每个单词非空,由大小写字母混合构成,且总字符长度不超过。在一行上输出一个整数,代表最后一个单词的长度。示例1输入输出13说明在这个样例中,最后一个单词是"HelloNowcoder" ,长度为 13。示例2输入A B C D输出1**思路一:**使用正则表达式分割。原创 2025-02-25 21:23:53 · 256 阅读 · 0 评论 -
华为机试牛客刷题之HJ12 字符串反转
思路是用hasNextLine()来判断是否有下一行输入,接着读取每一行字符串。接下来,将字符串转换为字符数组charArray,然后使用双指针的方法,从两端开始交换字符,直到中间相遇。最后,将字符数组转换回字符串并输出。在一行上输入一个长度 1≦length(s)≦1000 ,仅由小写字母构成的字符串 s。对于给定的仅由小写字母构成的字符串 s,将其颠倒后输出。在一行上输出一个字符串,代表颠倒后的字符串。原创 2025-02-25 20:24:35 · 140 阅读 · 0 评论 -
力扣_2389. 和有限的最长子序列
力扣_2389. 和有限的最长子序列给你一个长度为 `n` 的整数数组 `nums` ,和一个长度为 `m` 的整数数组 `queries` 。返回一个长度为 `m` 的数组 `answer` ,其中 `answer[i]` 是 `nums` 中 元素之和小于等于 `queries[i]` 的 **子序列** 的 **最大** 长度 。原创 2024-12-02 22:31:54 · 195 阅读 · 0 评论 -
力扣_876. 链表的中间结点
力扣_876. 链表的中间结点给你单链表的头结点 `head` ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。原创 2024-11-28 00:05:17 · 409 阅读 · 0 评论 -
力扣_125. 验证回文串
力扣_125. 验证回文串。解释:在移除非字母数字字符之后,短语正着读和反着读都一样。解释:“amanaplanacanalpanama” 是回文串。s 是一个空字符串 “”。输入:s = " "原创 2024-11-26 23:50:32 · 182 阅读 · 0 评论 -
力扣_删除排序链表中的重复元素 II
力扣_82. 删除排序链表中的重复元素 II。输入:head = [1,1,1,2,3]输出:[2,3]原创 2024-11-25 23:19:33 · 152 阅读 · 0 评论 -
蓝桥杯-分数-java
分数题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。类似:3/2,当然,这只是加了前 2 项而已。分子分母要求互质。运行限制最大运行时间:1s最大运行内存: 128M记录题解思路: * 经人脑分析后 * 分母就是2的19次方 约分后分子就是2的19次方,2的18次方,...到2的0次方之和 * 然后题目要求分子分母要求互质 * 于是先求分子分母的最大公约数 *原创 2022-04-08 21:27:01 · 625 阅读 · 0 评论 -
蓝桥杯-平方和-java
平方和题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到40 中这样的数包括 1、2、9、10 至 32、39 和 40,共28 个,他们的和是574,平方和是 14362。注意,平方和是指将每个数分别平方后求和。请问,在 1 到2019 中,所有这样的数的平方和是多少?运行限制最大运行时间:1s最大运行内存: 128M记录题解package com.xiang.lanqiao;/** *原创 2022-04-08 20:51:52 · 190 阅读 · 0 评论 -
蓝桥杯-ASC-java
ASC本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?运行限制最大运行时间:1s最大运行内存: 128M记录题解package com.xiang.lanqiao;/** * 直接输出 * @author snape * @create 2022-01-18 19:47 */public class ASCII { public static void原创 2022-04-07 20:10:24 · 204 阅读 · 0 评论 -
蓝桥杯-取位数-java
取位数题目描述本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。求1个整数的第k位数字有很多种方法。 以下的方法就是一种。请仔细分析源码,填写划线部分缺少的内容。源代码C#include <stdio.h>//原创 2022-04-07 20:00:35 · 131 阅读 · 0 评论 -
蓝桥杯-日期问题-java
日期问题题目描述小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月 02 日。给出一个文献原创 2022-04-07 16:28:36 · 801 阅读 · 0 评论 -
蓝桥杯-相乘-java
相乘本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以 1000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后 再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。运行限制最大运行时间:1s最大运行内存: 128M记录题解直接原创 2022-04-07 15:36:47 · 422 阅读 · 0 评论 -
蓝桥杯-第几天-java
第几天题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。2000 年的 1 月 1 日,是那一年的第 1 天。那么,2000 年的 5 月 4 日,是那一年的第几天?运行限制最大运行时间:1s最大运行内存: 128M记录题解直接用Calendar类package com.xiang.lanqiao;import java.util.Calendar;/** * 直接用Calendar类 * @author snape * @create 2原创 2022-04-07 15:07:45 · 169 阅读 · 0 评论 -
蓝桥杯_完全二叉树的权值_java
完全二叉树的权值题目描述给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1, A2, ··· AN,如下图所示:现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。输入描述第一行包含一个整数 N(1 ≤ N ≤ 10^5 )。第二行包含 N 个整数 A1, A2, ··· AN (−10^5 ≤ Ai ≤ 10^5)。输出描述输出一原创 2022-04-06 11:31:05 · 317 阅读 · 0 评论 -
蓝桥杯_乘积尾零_java
乘积尾零题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零?5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 1486 5722 3135 1170原创 2022-04-06 10:36:12 · 371 阅读 · 0 评论 -
蓝桥杯_最大降雨量_java
最大降雨量题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49个数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使用。每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术 施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值原创 2022-04-04 17:54:16 · 825 阅读 · 0 评论 -
蓝桥杯_承压计算_java
承压计算题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。X 星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。 金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 9 2 7 2原创 2022-04-04 14:52:42 · 109 阅读 · 0 评论 -
蓝桥杯_质数_java
质数题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算第 2019 个质数是多少?运行限制最大运行时间:1s最大运行内存: 128Mpackage com.xiang.lanqiao;import java.util.HashMap;import java.util.Map;/** * @author snape * @create 2022-04-04 11:39 */原创 2022-04-04 12:00:25 · 422 阅读 · 0 评论 -
蓝桥杯_路径_java
路径本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。小蓝的图由 2021 个结点组成,依次编号 1 至 2021。对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之原创 2022-04-04 11:37:39 · 338 阅读 · 2 评论 -
蓝桥杯_数的分解_java
数的分解题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。把 2019 分解成 3个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。运行限制最大运行时间:1s最大运行内存: 128M记录题解package com.xiang.lanqiao;/** * @author snape *原创 2022-04-03 20:55:19 · 236 阅读 · 0 评论 -
蓝桥杯_明码_java
明码题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。汉字的字形存在于字库中,即便在今天,16 点阵的字库也仍然使用广泛。16 点阵的字库把每个汉字看成是 16×16 个像素信息。并把这些信息记录在字节中。一个字节可以存储 8 位信息,用 32 个字节就可以存一个汉字的字形了。 把每个字节转为 2 进制表示,1 表示墨迹,0 表示底色。每行 2 个字节,一共 16 行,布局是: 第 1 字节,第 2 字节 第 3 字节,第 4 字节 .... 第 31 字节,原创 2022-04-03 20:41:04 · 89 阅读 · 0 评论 -
蓝桥杯_年号字串_java
年号字串题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。请问 2019 对应的字符串是什么?运行限制最大运行时间:1s最大运行内存: 128M记录题解这题刷力扣遇到过,这里写下力扣精选题解思路和代码,看懂后可以解决力扣中168.Excel表列名称原创 2022-04-03 16:52:01 · 334 阅读 · 0 评论 -
蓝桥杯_货物摆放_java
货物摆放题目描述小蓝有一个超大的仓库,可以摆放很多货物。现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足n=L×W×H。给定 n,请问有多少种堆放货物的方案满足要求。例如,当 n = 4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2 × 2 × 1、4 × 1 × 1。请问,原创 2022-04-03 16:29:23 · 290 阅读 · 0 评论 -
蓝桥杯_数列求值_java
数列求值题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。给定数列 1, 1, 1, 3, 5, 9, 17,⋯,从第 4 项开始,每项都是前 3 项的和。求第 20190324 项的最后 4 位数字。运行限制最大运行时间:1s最大运行内存: 128M记录题解不会写,看题解区大佬写的package com.xiang.lanqiao;/** * @author snape * @create 2022-02-08 19:00 */public原创 2022-04-02 20:33:31 · 508 阅读 · 0 评论 -
蓝桥杯_既约分数_java
既约分数题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。例如3/4 ,1/8 ,7/1 , 都是既约分数。请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1 和 2020)?运行限制最大运行时间:2s最大运行内存: 128M记录题解package com.xiang.lanqiao;/** * @author snape * @create 2022-原创 2022-04-02 20:02:42 · 441 阅读 · 0 评论