- 博客(45)
- 收藏
- 关注
原创 动态规划 ------ 背包问题
背包问题是动态规划中非常典型的一些题,本篇文章记录总结一下在学习过程中所遇到的一些背包问题。其实主要就是3种,01,完全,多重背包问题,这三种详细一些,认真搞懂了,剩下的就是这三种的变种了,换汤不换药?
2024-05-05 22:37:54
952
原创 AcWing算法基础课笔记 ------ 第五章 动态规划
本篇文章是在Acwing种学习动态规划的笔记题解,其中的不是很理解,就没有往上写。
2024-05-04 22:31:23
1136
2
原创 第14届蓝桥杯省赛 ---- C/C++ C组
第14届蓝桥杯省赛真题,关于数论的题目不是很会,又没理解的很清楚,所以有两道的题解没有发出来。这两道题:互为和。
2024-03-31 08:37:55
2537
5
原创 AcWing算法基础课笔记 ------ 第三章 搜索与图论
本篇博客记录AcWing算法基础课中的一些有关图论的算法,从熟知的dfs和bfs算法,再到求解单源路径,还有多源路径,最小生成树,以及二分图。
2024-02-28 22:07:09
1156
原创 AcWing算法基础课笔记 ------ 第二章 数据结构
本篇记录一下AcWing上第二章的笔记,这一章收获也很多,学会了用数组去模拟链表,复习了一遍KMP,求表达式,以及新的一些数据结构,字典树,并查集,还有更为高效的哈希表。
2024-02-25 18:51:42
1240
原创 AcWing算法基础课笔记 ------ 第一章 基础算法
本篇博客记录一下AcWing算法基础课第一章节的笔记,以及自己犯的一些错误。这一章节总体来说,收获还是不少的,清晰的认识了二分的模板,以及高精度的加减乘除,前缀和为什么0号位置不放,选择从1的位置开始算起,自己在使用qsort排序时候的错误等等。。
2024-02-23 15:03:20
1105
原创 中等题 ------ 链表
然后再第二次遍历的时候,同样也用前缀和去遍历,如果发现当前节点的前缀和与哈希表中的前缀和不一致,那么他们中间的节点和就是0.题目要求我们将链表进行分割,把所有小于x的放在链表左侧,大于或者等于x的放到链表右侧,从测试用例可以看出,不需要有序也行。这道题通俗易懂的来说就是要我们统计出一个链表中,连续节点的区间个数,这个区间里的每个数都必须是nums中的。在遍历第一遍的时候,将前缀和与相对的节点存到哈希表中去,如果前缀和多次出现,只存它最后一次出现的位置。当你也可以,转数组,qsort,转链表。
2024-02-04 13:29:26
918
原创 C语言实现跳表(附源码)
跳表与红黑树,AVL树等,都是一种有序集合,那既然是有序集合,其目的肯定是去奔着提升查找效率而去实现的。3int val;//值//当前节点的最大层数//下一个节点的指针数组。}SkipNode;//节点个数int level;//跳表的索引总层数}SkipList;以上是跳表的结构定义,其中那个Node中maxLevel就是当前这个节点的层数,因为每个节点的层数是不一样的嘛,这个用途呢在后面的删除节点中会用到。
2024-02-02 16:55:27
1959
原创 中等题 ------ 数组以及字符串
以前刷的都是一些简单题,从一些基本的数据结构到算法,得有400多道了,简单题就先这样吧,从今天以后就开始着手中等题和困难题了。做了一些中等题,感觉确实和简单题没法比,简单题有些直接模拟,暴力就能做出来,而这些中等题是根本想不到该怎么做,但看了题解,找到公式关系,规律也就觉得还行,慢慢加油吧。本篇是一些关于数组和字符串的题。和的简单题在这。
2024-01-28 21:24:03
995
原创 刷题 ----- 动态规划
下面就是leetcode上所有关于动态规划的简单题了,有好多是重复的,也就没写。设计出转移状态方程,以及初始化的值,是用动态规划解题的关键。
2024-01-23 16:31:10
939
原创 刷题 ------ 排序
基于上篇的排序算法,本篇刷了一下leetcode上的关于排序算法的题,因为我是点的排序标签刷的,所以有些题排完序答案就出来了,就没有写题解了。
2024-01-21 14:12:25
1168
原创 刷题 ------ 二分枚举(查找)
文章目录1.x 的平方根2.第一个错误的版本3.有效的完全平方数4.猜数字大小5.排列硬币6. 寻找比目标字母大的最小字母7. 二分查找8.检查整数以及其两倍数是否存在9. 两个数组间的距离值10.特殊的数组的特征值11.找出数组排序后的目标下标12.和有限的最长子序列13.正整数和负数的最大计数14.最小公共值15.统计和小于目标的下标对数目16.LCP.早餐组合16.LCP.采购方案17.LCR.两数之和 || - 输入有序数组18. LCR 搜索插入位置19.LCR 山脉素组的峰顶索引19.寻找旋转排
2024-01-15 22:12:38
1287
原创 刷题 ------ 模拟
模拟也能叫暴力,我是这样理解的,一个问题,首先想到的那个方法(把所有的可能性全部一一遍历出来)。就比如字符串匹配算法,模拟(暴力)可以使用双for直接做出。但是这种效率肯定没有KMP匹配算法高。我在前面刷数组,链表,字符串等等中,其实还是用了很多暴力的方法来做的。所以此篇我全是用的模拟暴力的求解办法,有些优质的办法也没写出来。
2024-01-11 21:05:28
961
原创 刷题 ------ 矩阵
最后开始做的时候,没看清楚题,我以为他是动态的,就是走一步,然后在矩阵中的全部9空格的数据全部改成平均值,所以在外面封装了一个函数,到最后发现只改一个,也就没改了,这道题完全可以在主函数中实现。这道题,首先得知道要是9宫格,那么你遍历矩阵的时候,就不能还是老老实实的从第一行第一个元素开始遍历了,看下图,自身元素能产生就9宫格的,只能从第二行第二列开始遍历,结尾也得注意。这道题我在刚做的时候是开辟了matrix 的大小,我以为幸运数最多每行一个,结果后续看题解,幸运数只有一个,有修改了修改,提高了点时间。
2024-01-03 17:46:53
1171
原创 刷题 ------ 深度(DFS)与广度(BFS)优先搜索
其实在上一边博客中 ----- 二叉树刷题,就能感觉到,对二叉树的遍历操作:前中后序遍历是DFS层序遍历则是BFS。
2023-12-28 17:29:22
1099
原创 刷题 ------ 二叉树
这道题主要是考察,直径在这里的概念是啥,先观察上图,这一看就能看出来,最左边的孩子到最右边的孩子一定是那个最长的,想都不用想,没有什么比从一左边拐到右边长了,最左边的孩子的路径是2,最右边的是1.所以直径是 2+1 = 3.我们同样还是运用递归的方式去实现,做了这几道题,也能感觉出来点啥,这几种方式,其实跟在学习数据结构图的遍历的时候,那里有一个深度优先算法,就是一条路走到黑的那种,其实还是很类似的。要注意的是,得使用二级指针,因为你要修改指针的值嘛,当然你也可以拿一个变量去记录值,这都是无所谓的。
2023-12-24 16:12:53
183
原创 刷题 ------ 哈希表
这种方式其实在平时刷一些题的时候,直接就可以在函数中实现,去使用,建立一个数组就好了,但是缺点就是浪费的空间太大了。就是把‘\0’传入那个查找函数中去,又因为哈希表中 0 - ‘a’ 成负的了,肯定是错的,然后我改成这样。这道题,它说恰有一个元素重复了n次,就意思是,只有个元素是重复的。这样暴力太费时了,有时候你的网速不是很好,这个还过不了,所以用哈希表来做还是相当不错的。这道题,可以直接用暴力求法,一个一个的去枚举,就能成功,但是时间太慢了。这个交换一次有说法的,不能不交换,也不能交换2次,这点很重要。
2023-12-17 16:34:57
246
1
原创 用C语言计算出一则式子!!!
这个真是好思路,第一个数永远是+的么,假设前面有一个+的运算符,然后当发现下一个运算符的时候,计算答案同时更新运算符,然后操作前面的数字。但是要注意循环条件得 == ‘\0’,如果不运行的话,10就给空过了。做式子,正常不都是1+2,我想着都是记录下一个运算符是啥,我按照这个思路半天做不出来,比赛中遇到一道题,人都红温了,想不出题解,还是菜/(ㄒoㄒ)/~~题目就是上面这样的,当时这道题,直接给我干没心态了,还是自己菜。现在我看了各种思路代码,我现在研究懂了,记录前一个操作符!
2023-12-09 20:05:37
231
原创 刷题 ------ 栈
他这道题就是让咱实现一个队列,题目中说两个书车,既然又出现在栈里面,那应该是让咱用两个栈实现一个队列,就像前面的那一道题一样,这里我就直接实现一个队列过了的。这道题是构造栈,它这个最小栈的意思就是可以用O(1)的方式去直接找到栈中最小的,如果直接遍历得出结果,还叫什么最小栈。上面就是leetcode上所有关于栈的简单题了,有好几个重复的,就没往上放,还有些二叉树的题,也没有放。下面是代码,栈在这里的代码也没有放出来,思路就是这么一个思路,自己动手实现一下栈还是可以的。我这里就不放出来了,我用的是循环队列。
2023-12-08 20:25:28
238
原创 KMP匹配算法
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n) [1]。----- 来自百度KMP算法区别于暴力求解法,时间上有了很大的优化。只需要对主字符串进行一次遍历就好。
2023-12-06 08:52:16
126
1
原创 刷题 ------ 字符串
既然是找最后一个单词,那么直接求出字符串的长度,然后从后往前找即可int i;i >= 0;i--)//如果找到了空格,并且在此之前还找到了字母就意味着这个单词结束了= 0)break;//如果不等于空格长度增加if(s[i]!return ans;
2023-12-05 12:18:28
240
1
原创 数据结构图 ------最小生成树
我个人感觉,Prim算法虽然写起来多,但是好理解,比这个Kruskal的parent判断回路好理解。而Kruskal算法核心就是这个判断回路🤣🤣🤣。Prim和Kruskal算法源码。
2023-11-03 20:21:25
122
空空如也
如何在第二十个测试用例会出错下面是代码?
2024-01-03
我就拿到VS编译器上尝试调试一下,结果发现是逆转字符串有错(相关搜索:逆序字符串)
2023-11-29
leetcode杨辉三角
2023-11-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人