自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 收藏
  • 关注

原创 KY84 | 二叉树

该程序计算二叉树中节点值不超过n的节点总数。给定起始节点m,通过队列进行层次遍历,将每个节点的左右子节点(2m和2m+1)入队并计数,直到所有满足条件的节点都被访问。最终输出符合条件的节点总数。程序的核心是使用队列实现的广度优先搜索算法,时间复杂度为O(n),空间复杂度为O(n)。输入为m和n,输出为满足条件的节点数量。

2025-07-05 16:31:31 109

原创 KY46 | 二叉树

摘要:该程序实现了一个求解两个正整数n和m的最近公共祖先的算法。通过不断将较大的数除以2,直至两数相等,此时得到的数值即为所求。程序采用循环结构处理多组输入,每次输出n和m的最近公共祖先。算法利用了二分查找的思想,时间复杂度为O(log(max(n,m)))。

2025-07-05 16:15:46 112

原创 KY211 | 二叉树遍历

摘要:本文实现了一个二叉树重建及后序遍历程序。通过前序遍历字符串和中序遍历字符串,递归构建二叉树结构,然后进行后序遍历输出。程序首先读取前序和中序遍历序列,调用recover函数递归重建二叉树,其中根据根节点在中序序列的位置划分左右子树。最后通过postOrder函数实现后序遍历输出。该算法实现了二叉树的经典重建及遍历功能。

2025-07-05 15:52:23 110

原创 KY187 | 哈夫曼树

摘要:该程序使用优先队列(最小堆)实现霍夫曼编码的贪心算法。首先读取输入数据并存入最小堆,然后不断取出最小的两个元素相加,将结果重新放入堆中,同时累加每次合并的代价。最终输出所有合并代价的总和,即为构造霍夫曼树的最小总成本。该算法时间复杂度为O(nlogn),适用于解决合并石子等最小化合并代价的问题。

2025-07-05 15:07:36 113

原创 KY101 | 计算表达式

摘要:该程序实现了一个简单的表达式计算器,采用栈结构处理运算符优先级。程序读取用户输入的字符串表达式,通过数字提取函数和运算符优先级判断,使用两个栈分别存储数字和运算符。当遇到低优先级运算符时,先计算栈顶高优先级运算,最终输出表达式结果。主要功能包括数字提取、运算符优先级判断、基本四则运算等。

2025-07-05 13:33:19 87

原创 KY179 | 堆栈的使用

摘要: 该程序实现了一个栈的基本操作,包括压入(Push)、弹出(Pop)和查看栈顶元素(A)。用户输入操作次数n,随后输入n次操作指令。'P'指令压入数字,'O'弹出栈顶元素,'A'显示当前栈顶元素(若栈空则输出'E')。程序使用C++标准库的stack容器实现,通过循环处理所有操作指令,并根据不同指令执行相应操作,最后返回0表示程序正常结束。

2025-07-05 12:13:32 70

原创 KY128 | 简单计算器

该程序实现了一个简单的四则运算计算器,支持加、减、乘、除运算。主要功能包括:解析输入表达式字符串,处理数字和运算符,使用双栈结构(数字栈和运算符栈)实现运算优先级处理。程序从标准输入读取表达式,遇到"0"时终止,输出保留两位小数的结果。核心算法利用运算符优先级比较来决定运算顺序,通过栈结构实现了表达式求值功能。

2025-07-05 11:48:50 76

原创 KY198 | 查找

该程序实现了一个二分查找算法。首先读取一个整数数组,用qsort进行排序。然后读取多个目标值,对每个目标值在排序后的数组中进行二分查找:比较中间元素,根据大小关系调整查找范围,找到则输出"YES",否则输出"NO"。程序通过标准输入输出处理多个测试用例,展示了排序与二分查找的经典组合应用。

2025-07-03 17:00:11 92

原创 KY53 | 打印极值点下标

该程序用于检测数组中的极值点(波峰或波谷)。输入一个整数k和k个元素的数组,程序会遍历数组,将满足极值条件的元素下标输出。具体判断逻辑包括:首元素若与次元素不同则输出;中间元素若同时大于或小于相邻元素则输出;末元素若与前元素不同则输出。程序通过逐元素比较相邻值来识别所有极值点位置。

2025-07-03 11:47:57 84

原创 KY26 | 查找学生信息

该程序实现了一个学生信息查询系统。首先输入学生数量n,然后录入每个学生的学号、姓名、性别和年龄信息。接着输入查询次数m,每次输入一个学号进行查询。程序会遍历学生数组,若找到匹配学号则输出完整学生信息,否则输出"No Answer!"。程序使用结构体存储学生数据,支持批量查询,直到读取结束。主要功能包括学生信息存储和基于学号的快速检索。

2025-07-03 11:32:25 77

原创 KY157 | 找x

该程序是一个C语言实现的数组查找程序。主要功能是:输入一个整数n,然后输入n个整数存储在数组中,再输入一个目标值x。程序会遍历数组查找x,若找到则输出其下标,否则输出-1。程序使用EOF控制循环,可以处理多组测试数据。核心逻辑是通过简单的线性查找实现目标值定位,时间复杂度为O(n)。程序简洁明了,适用于小规模数据的查找需求。

2025-07-03 11:11:00 92

原创 KY24 | 剩下的树

摘要:该程序计算移除指定区间后的剩余树木数量。输入包括道路长度L和移除区域数M,随后输入M个区间的起始和结束位置。程序初始化一个数组表示所有树木存在(值为0),然后将移除区间内的树木标记为1。最后统计未被标记的树木数量并输出。主要功能是通过遍历区间更新树木状态,然后计算剩余数量。程序持续处理输入直到EOF。

2025-07-03 11:00:01 107

原创 KY28 | 谁是你的潜在朋友

该程序用于查找数组中每个元素的潜在朋友数量。程序首先读取整数n和m,然后读取n个整数存入数组p。通过统计每个数字出现的次数,对于每个元素,若出现次数减1为0则输出"BeiJu",否则输出次数减1的结果。程序利用数组books记录数字频次,通过遍历数组p输出每个元素的潜在朋友数量。主要功能是统计并输出数组中每个数字的重复出现次数(不包括自己)。

2025-07-03 10:32:30 99

原创 KY93 | Simple Sorting

该程序实现了一个归并排序算法,用于对输入的整数数组进行排序并去除重复元素。程序主要包含三个函数:merge()用于合并两个已排序的子数组,mergeSort()递归地将数组分成更小的子数组进行排序,main()函数处理输入输出。程序首先读取输入的整数个数n和数组元素,通过归并排序将数组排序后,输出时不重复的元素。核心算法时间复杂度为O(nlogn),空间复杂度为O(n)。程序使用了分治策略,适合处理大规模数据排序问题。

2025-07-02 20:53:14 121

原创 KY135 | 统计同成绩学生人数

该程序统计输入数组中特定数值的出现次数。首先读取数组长度n,随后读取n个整数存入数组,再读取目标分数score。通过遍历数组,程序统计与score相等的元素个数并输出结果。程序采用循环结构,可以处理多组输入数据,直到输入结束。代码简洁高效,使用固定长度数组存储数据,适合处理不超过1000个元素的输入情况。

2025-07-02 20:32:52 74

原创 KY221 | 打印日期

该程序实现将给定年份和天数转换为对应的日期格式。主要功能包括:1)判断闰年函数isLeapyear;2)日期转换函数is_month_day,通过遍历月份数组计算对应月份和日期;3)主程序读取输入的年和天数,调用转换函数并格式化输出日期(自动补零)。程序处理闰年2月特殊情况,支持连续输入多组数据,输出格式为YYYY-MM-DD。核心算法是通过累计天数确定月份边界,适用于日期计算相关应用场景。

2025-07-02 20:24:29 77

原创 KY18 | 今年的第几天?

该程序实现计算给定日期是该年第几天的功能。主要包含两个函数:isLeapyear()判断闰年,is_today()计算天数。主程序通过循环读取输入的日期(年、月、日),调用is_today()计算并输出结果。is_today()函数通过遍历月份数组累加天数,对2月特别处理闰年情况。程序能正确处理不同年份(包括闰年)的日期转换,输出该日期在当年的天数序号。

2025-07-02 19:39:01 110

原创 KY107 | Day of Week

这篇C语言程序实现了计算给定日期对应星期几的功能。主要包含两个函数:isLeapyear()判断闰年,is_week_day()计算星期。程序通过累加从公元1年到目标年份的总天数,加上月份和日期的天数,最后对7取模得到星期几。输入格式为"日 月 年"(如"1 January 2000"),输出对应的星期名称。关键点包括闰年判断、月份字符串匹配和天数累加计算。程序采用模块化设计,使用字符串数组存储月份和星期名称,提高代码可读性。

2025-07-02 19:27:58 95

原创 KY110 | 日期差值

【摘要】该程序计算两个日期之间的天数差。程序包含两个主要函数:isLeapyear判断闰年,compute_days计算从公元0年开始到指定日期的总天数。主函数获取两个日期输入,分别计算总天数后求差值加1,输出最终结果。程序采用数组存储各月份天数,并考虑了闰年2月天数的特殊处理。

2025-07-02 18:48:44 209

原创 KY167 | 字符串内排序

摘要:本文展示了一个C语言实现的字符串归并排序程序。程序定义了一个最大长度为200的字符串数组,通过递归调用mergeSort函数将字符串拆分为更小的子数组,然后使用merge函数合并排序。主函数读取输入字符串,调用排序函数处理后输出结果。文章完整呈现了归并排序算法在字符串排序中的应用,包括分治策略、合并操作和递归实现等关键步骤。

2025-07-02 16:26:44 82

原创 KY144 | EXCEL排序

该程序实现了一个学生信息排序系统,能够根据学号、姓名或成绩对学生数据进行排序。程序采用归并排序算法,支持三种排序方式:1)按学号升序;2)按姓名升序(姓名相同则按学号);3)按成绩升序(成绩相同则按学号)。输入格式为n(学生数量)和c(排序方式),随后输入n条学生记录(学号、姓名、成绩)。程序输出排序后的结果,并支持多组数据输入。该实现具有高效稳定的排序性能,适合处理大规模数据(最大10万条记录)。

2025-07-02 16:09:54 416

原创 KY210 | 特殊排序

【代码】KY210 | 特殊排序。

2025-07-02 10:59:12 86

原创 16. 最接近的三数之和

摘要:本文提出了一种解决「最接近的三数之和」问题的高效算法。通过先对数组进行排序,然后使用双重指针法遍历数组,寻找与目标值最接近的三个数之和。算法时间复杂度为O(n²),通过维护最小差值来优化搜索过程。该方法适用于每组输入只有唯一解的情况,能够快速返回最接近目标值的三个数之和。

2025-07-02 09:58:40 305

原创 KY1 | 成绩排序

摘要:该程序实现了一个基于归并排序的学生成绩排序系统。程序通过读取输入的学生姓名和成绩数据,根据用户指定的排序方式(1为降序,其他为升序)进行排序,并输出结果。主要包含merge()和mergeSort()两个核心函数,前者负责合并两个有序子数组,后者实现递归分治的归并排序算法。程序支持多组数据输入,每行输出排序后的学生姓名和成绩,具有较好的可扩展性和稳定性。

2025-07-02 09:58:14 108

原创 KY209 | 排序(归并排序)

该程序实现归并排序算法,主要包含三个函数:merge()用于合并两个有序数组,mergeSort()递归分割数组并调用merge()进行排序,main()处理输入输出。程序首先读取整数n和n个数据,通过归并排序对数组升序排列后输出结果。归并排序采用分治策略,时间复杂度为O(nlogn),使用辅助数组完成合并过程。程序循环读取输入直到EOF,每次处理一组数据并输出排序结果。

2025-07-01 11:01:01 81

原创 15. 三数之和(力扣)

该代码实现了求解三数之和的算法。主要思路是:1) 先对数组进行排序;2)使用双指针法遍历数组,寻找满足nums[i]+nums[left]+nums[right]=0的三元组;3)跳过重复元素以避免重复解。算法时间复杂度为O(n²),空间复杂度为O(n²)。关键点包括:排序预处理、双指针移动策略、以及处理重复元素的技巧。函数返回所有不重复的三元组,并通过指针参数返回结果数组的大小和列宽信息。

2025-06-22 13:28:34 95

原创 14. 最长公共前缀(力扣)

这篇文章介绍了一个寻找字符串数组最长公共前缀的C语言实现。算法首先将第一个字符串作为初始前缀,然后依次与其他字符串比较,在比较过程中不断缩短前缀长度:当字符不匹配时截断前缀。通过动态调整前缀长度,最终返回所有字符串共享的最长前缀。该实现时间复杂度为O(S),其中S是所有字符串的字符总数,空间复杂度为O(1)。代码使用动态内存分配,需要注意内存释放问题。

2025-06-22 10:39:46 87

原创 13. 罗马数字转整数(力扣)

摘要:这是一个将罗马数字转换为整数的C语言函数。该函数通过遍历输入的罗马数字字符串,将每个字符与预定义的罗马数字符号及其对应值进行比较和计算。当遇到数值递增的情况时,会进行特殊处理。最终返回转换后的整数结果。函数使用了两个数组分别存储罗马数字符号和对应数值,通过循环比较实现转换逻辑。

2025-06-22 10:09:02 114

原创 12. 整数转罗马数字

摘要:该程序实现了将整数转换为罗马数字的功能。通过定义罗马数字符号及其对应数值的映射表,采用贪心算法从大到小遍历数值表,不断拼接对应的罗马字符直至数值归零。程序使用动态数组存储结果,确保了内存安全。算法时间复杂度为O(1),空间复杂度为O(1),适用于1到3999的整数转换。

2025-06-22 09:38:08 490

原创 11. 盛最多水的容器(力扣)

摘要:该算法解决容器盛水问题,采用双指针法从两端向中间遍历。每次移动较短的边,计算当前区域面积并更新最大值。通过比较左右指针的高度,总是移动较小的指针以寻找可能的更大高度,从而在宽度减小时可能获得更大容量。时间复杂度为O(n),空间复杂度为O(1)。核心在于理解移动较短指针的策略可以优化搜索过程。

2025-06-22 09:05:14 318

原创 10. 正则表达式匹配(力扣)

摘要:本文解析正则表达式匹配的动态规划实现。核心是构建二维数组dp[i][j]表示字符串s[0..i-1]与模式p[0..j-1]的匹配状态。重点处理三种情况:(1)直接字符匹配时继承前序状态;(2)遇到''时考虑零次或多次匹配前驱字符;(3)其他情况设为不匹配。特别处理''的两种情况:dp[i][j-2]表示忽略前驱字符,当'.'或字符匹配时还需考虑dp[i-1][j]的多次匹配情况。初始化时需单独处理模式中'*'与空字符串的匹配关系。

2025-06-21 14:24:47 222

原创 9. 回文数(力扣)

【代码】9. 回文数(力扣)

2025-06-21 09:52:00 87

原创 8. 字符串转换整数 (atoi)(力扣)

这篇文章介绍了一个C语言实现的字符串转整数函数myAtoi()。函数首先去除输入字符串的前导空格,然后处理正负符号。核心转换功能由辅助函数aa()完成,它会提取数字字符并转换为长整型。主函数myAtoi()会检查转换结果是否在32位有符号整数范围内(-2147483648到2147483647),若超出则返回对应的边界值。该方法实现了基本的字符串到整数的转换,并考虑了数值范围限制的特殊情况。

2025-06-21 09:43:44 115

原创 7. 整数反转

摘要:该代码实现了一个整数反转函数,通过循环将输入整数x逐位反转。在反转过程中检查溢出情况,如果中间结果超过32位有符号整数范围(±214748364),则返回0。最终返回反转后的整数out。时间复杂度为O(n),空间复杂度为O(1)。

2025-06-20 17:03:53 412

原创 6. Z 字形变换(力扣)

本文展示了一个将字符串按Z字形排列后按行输出的C语言解决方案。函数通过计算字符位置与行号的对应关系,将原字符串重新排列。当行数为1时直接返回原字符串。算法使用双循环遍历字符串,通过模运算确定每个字符对应的行号,并按行号顺序收集字符。该方法时间复杂度为O(n^2),空间复杂度为O(n),适用于中等长度字符串的Z字形变换需求。

2025-06-20 16:18:30 75

原创 4. 寻找两个正序数组的中位数(力扣)

【代码】4. 寻找两个正序数组的中位数(力扣)

2025-06-20 14:52:18 422

原创 3. 无重复字符的最长子串(力扣)

【代码】3. 无重复字符的最长子串(力扣)

2025-06-20 14:16:23 509

原创 BM20 | 数组中的逆序对 题解

【代码】BM20 | 数组中的逆序对 题解。

2025-06-11 16:55:13 117

原创 BM19 | 寻找峰值 题解

【代码】BM19 | 寻找峰值 题解。

2025-06-11 16:33:19 330

原创 BM18 | 二维数组中的查找 题解

【代码】BM18 | 二维数组中的查找 题解。

2025-06-11 16:20:28 93

Java面向程序设计期末机考练习题以及答案

Java面向程序设计期末机考练习题以及答案

2024-08-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除