- 博客(14)
- 收藏
- 关注
原创 摩尔投票法
摩尔投票法的核心思想是通过遍历数组,维护一个候选的主要元素和一个计数器。在遍历过程中,如果遇到与候选元素相同的元素,则计数器加1;如果遇到不同的元素,则计数器减1。当计数器变为0时,说明之前的候选元素已经被“抵消”完了,此时需要选择一个新的候选元素,并将计数器重置为1。由于多数元素的出现次数超过了一半,因此在遍历结束后,候选元素一定是出现次数最多的那个元素(如果存在多数元素的话)。
2024-09-30 16:27:58
528
原创 力扣33 搜索旋转排序数组
整数数组nums按升序排列,数组中的值。在传递给函数之前,nums在预先未知的某个下标k)上进行了,使数组变为(下标计数)。例如,在下标3处经旋转后可能变为。给你的数组nums和一个整数target,如果nums中存在这个目标值target,则返回它的下标,否则返回-1。你必须设计一个时间复杂度为O(log n)的算法解决此问题。
2024-09-26 20:52:53
286
1
原创 力扣14——最长公共前缀(c语言版)
2、遍历后续字符串,并更新最长公共前缀即可。3、注意'\0'的使用。实现思路:1、先将第一个字符串设为最长公共前缀。
2023-12-09 19:52:28
289
原创 最长平衡子字符串(C语言)
1、最长平衡子是由零一组成的偶数串,被踢我采用一个空间为二的数组来记录0,1的个数2、重点是判断0的位置是否位于下一个字串开头(原串首位是0,或该位置前一位是1)。此时,将数组0位置设为一,1位值设为零。否则,读0时,0位自加,读一时,1为自加。
2023-11-08 20:25:46
119
1
原创 力扣第七题——整数反转
本题的核心是如何判断反转之后的整数是否越界,也就是以上代码中的。如果越界,也只存在循环最后一次执行的相关判断。本代码是速度最快的,但内存较大。
2023-10-29 16:56:33
88
1
原创 KMP 模式匹配算法(C语言版)
在我们进行字符串的模式匹配操作时,常用的算法有BF模式匹配算法和KMP模式匹配算法,其中BF模式匹配算法也就是常见的暴力解法,其时间复杂为O(m*n),而KMP算法时间复杂m+n)其优化了BF模式匹配算法中的指针回溯问题,时期算法效率答答题高。具体是(串从一开始计数):1、在匹配过程中,目标串的指针不需要回溯,只回溯模式串的指针。2、如果目标串和和模式串前n个字符匹配成功,遇到匹配失败的字符时,模式串指针回溯的位置有模式串的内容决定(回溯到 匹配失败位置前的模式串的最长公共前后缀的长度加一的位置)
2023-10-13 15:57:03
311
原创 学生信息管理系统——JAVA
System.out.println("暂无学生信息,请输入");System.out.println("请输入要删除的学生的学号");System.out.println("请输入要修改的学生学号");System.out.println("请先输入信息");System.out.println("请输入新居住地");System.out.println("请输入新姓名");System.out.println("请输入新年龄");System.out.println("请输入新学号");
2023-05-29 23:20:14
18890
9
原创 十大经典排序算法————选择排序及其优化(C语言版)
选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找(大)元素,然后放到已排序序列的末尾。以此类推,将全部待排序的数据元素排完。主要分为直接选择排序、树形选择排序以及堆排序。此处定义了一个长度为len的数组,采用两个简单的嵌套循环。补充:用time()为srand()生成一个随机种子,作为rand参数一生成一个随机数。此处优化方法为交换最小下标,以降低交换次数。((后续会补充其他方案)。
2023-03-29 23:07:22
323
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人