文章目录
- 一刷总结
 - 一、 成果汇报
 - 1、leetcode提交记录
 - 2、博客更新记录
 
- 二、 经验总结
 - 2.1.刷过的所有题型
 - 2.1.1、数组
 - 2.1.2、链表
 - 2.1.3、哈希表
 - 2.1.4、字符串
 - 2.1.5、栈与队列
 - 2.1.6、二叉树
 - 2.1.7、回溯
 - 2.1.8、贪心
 - 2.1.9、动态规划
 - 2.1.10、单调栈
 
- 2.2、做得好的
 - 2.3、做得不好的
 - 2.4、其他的碎碎念
 
- 三、 为什么要刷题
 - 3.1、面向大厂
 
- 四、 未来计划
 - 4.1、二刷计划
 - 4.2、leetcode100热题计划
 
- 五、 感谢
 
一刷总结
- 成果汇报
 - 经验总结
 - 为什么要刷题
 - 未来计划
 - 感谢
 - 以及附件资源,里面有所有pdf,需要自取。
 
一、 成果汇报
1、leetcode提交记录

 
历经60天的坚持,一共刷了139题。
 本人之前是一题都没有刷过的,虽然工作了几年,但是算法这一块,是纯纯的小白。当年实习和社招的时候,还不需要考算法,算法能力还是比较薄弱的。
2、博客更新记录

博客一共更新了53篇。
二、 经验总结
2.1.刷过的所有题型
在博客最前面放上pdf,点击思维导图的右上角的【箭头】可以直接跳转到leetcode,支持一键跳转方便复习。
 
 主要就是刷过所有题目的一个思维导图总结
2.1.1、数组

- 1、一刷被跳过的题目: 
  
螺旋矩阵,题目看不懂,就跳过了。
 - 2、数组的重点: 
  
- 数组下标都是从0开始的。
 - 数组内存空间的地址是连续的
 - 数组元素无法删除,只能覆盖
 
 - 3、数组的刷题技巧: 
  
- 二分法。
 - 双指针
 - 滑动窗口
 
 
2.1.2、链表

- 1、一刷被跳过的题目: 
  
设计链表,当时觉得代码太多,就跳过了,没有找到提交记录。链表相交,当时没有看懂题解,就跳过了。
 - 2、链表的重点: 
  
- 链表在内存中不连续。
 - 链表删除节点,就是跳过要删除的节点,让指针指向当前节点的下一个节点。
 - 数组元素无法删除,只能覆盖
 
 - 3、链表的刷题技巧: 
  
- 原链表删除
 - 虚拟头节点
-增加虚拟头结点简化操作 - 双指针法 
    
- 可用于反转链表、删除倒N、链表相交等场景。
 
 - 递归反转链表
 - 判断链表是否有环,判断环的入口在哪里
 
 
2.1.3、哈希表

- 1、一刷被跳过的题目: 
  
赎金信,easy题,当时好像是题目都没看懂,所以直接被我跳过了。
 - 2、哈希表的重点: 
  
- 哈希表一般用来快速判断一个元素是否出现集合里。
 - 哈希表可分为数组、set集合、map三类,应根据不同场景选择合适的数据结构。
 
 - 3、哈希表的刷题技巧: 
  
- 使用数组作为哈希表
 - 使用set集合作为哈希表
 - 使用map作为哈希表
 - 这三种数据结构没有固定的套路,需要灵活选择。
 
 
2.1.4、字符串

- 1、一刷被跳过的题目: 
  
重复的字符串,easy题,不知道为啥当时被我跳过了。
 - 2、字符串的重点: 
  
- 双指针解题思路
 - kmp算法,要知道什么是前缀表,前缀表怎么求。
 
 - 3、字符串的刷题技巧: 
  
- 双指针法 
    
- 可用于反转字符串、移除元素等场景。
 - 先整体再局部
 
 - KMP算法
 
 - 双指针法 
    
 
2.1.5、栈与队列

- 1、一刷被跳过的题目: 
  
滑动窗口最大值,hard题
 - 2、栈与队列的重点: 
  
- 什么是栈,如何实现(设计)栈
 - 什么是队列,如何实现(设计)队列
 - kmp算法,要知道什么是前缀表,前缀表怎么求。
 
 - 3、栈与队列的刷题技巧: 
  
- 匹配问题一般都可以用栈解决 
    
- 使用栈解决括号匹配问题
 - 使用栈解决字符串匹配问题
 - 使用栈解决逆波兰表达式问题
 
 - 队列有单调队列、优先队列等 
    
- 使用队列解决滑动窗口最大值问题,
单调队列 - 使用队列解决前K个高频元素问题,
优先队列 
 - 使用队列解决滑动窗口最大值问题,
 
 - 匹配问题一般都可以用栈解决 
    
 
2.1.6、二叉树

- 1、一刷被跳过的题目:
-迭代遍历,大部分的题目的迭代遍历都被我跳过了,二刷再来看吧。 - 2、树的重点: 
  
- 树的种类
 - 树的遍历方式 
    
- 递归遍历,
是深度优先遍历。递归法有模板,一定要牢记 - 迭代遍历、统一迭代遍历,
是深度优先遍历 - 层序遍历,
是广度优先遍历。层序法有模板,一定要牢记 
 - 递归遍历,
 
 - 3、树的刷题技巧: 
  
- 二叉树的属性 
    
- 一般可以用递归和迭代解决
 - 需要想明白用哪种遍历方式,以及遍历顺序,用前中后序的哪一种。
 
 - 二叉树的修改与构造 
    
- 掌握递归遍历即可
 
 - 二叉搜索树的属性 
    
- 解题思路还是一致的,但是需要想想是否可以利用搜索树的特性,更加方便快捷的解决问题
 
 - 二叉搜索树的修改与构造 
    
- 思考是否可以利用二叉搜索树的属性。
 
 - 二叉树的祖先问题
 
 - 二叉树的属性 
    
 
2.1.7、回溯

- 1、一刷被跳过的题目: 
  
重新安排行程,hard题,研究明白了也意义不大,面试遇到了算我输,战略性放弃。N皇后,hard题,研究明白了也意义不大,面试遇到了算我输,战略性放弃。解数独,hard题,研究明白了也意义不大,面试遇到了算我输,战略性放弃。
 - 2、回溯的重点: 
  
- 回溯是递归的副产品,回溯常常和递归绑定在一起
 - 回溯法就是暴力搜索,并不高效,但通常可以剪枝,优化算法效率。
 - 回溯有模板。
一定要牢记。 
 - 3、回溯的刷题技巧: 
  
- 回溯解决组合问题 
    
- N个数里面按一定规则找出k个数的集合,
排列顺序无所谓。 
 - N个数里面按一定规则找出k个数的集合,
 - 回溯解决分割问题 
    
- 一个字符串按一定规则有几种分割方式
 
 - 回溯解决子集问题 
    
- 一个N个数的集合里有多少符合条件的子集
 
 - 回溯解决排列问题 
    
- N个数按一定规则全排列,有几种排列方式。
严格关注排列顺序,顺序会影响结果。 
 - N个数按一定规则全排列,有几种排列方式。
 - 回溯解决棋盘问题
 
 - 回溯解决组合问题 
    
 
2.1.8、贪心

- 1、一刷被跳过的题目: 
  
监控二叉树,hard题,研究明白了也意义不大,面试遇到了算我输,战略性放弃。
 - 2、贪心的重点: 
  
- 贪心没有模板,也没有套路
 - 贪心算法的核心思想就是把一个问题拆分为多个子问题。每个子问题取得最优解。从局部最优解从而推得全局最优解,所以叫贪心。
 
 - 3、贪心的刷题技巧: 
  
- 贪心简单题 
    
- 没啥技巧,全靠常识,但是一刷还是想不到的,需要看题解。
 
 - 序列问题
 - 2个维度权衡问题 
    
- 要先确定一个维度,再确定另外一个维度,不可以俩个维度同时考虑
 
 - 股票问题 
    
- 贪心也可以解决股票问题
 
 - 区间问题 
    
- 已经有点难了,各种重复问题
 
 
 - 贪心简单题 
    
 
2.1.9、动态规划

- 1、一刷被跳过的题目: 
  
最长重复子数组,不知道为啥漏了,可能刷题的时候漏看了吧。。
 - 2、动态规划的重点: 
  
- 动态规划有模板,
需要牢记
-动态规划难点在于状态转移方程的推导和遍历顺序,尤其是遍历顺序很容易绕晕。 
 - 动态规划有模板,
 - 3、动态规划的刷题技巧: 
  
- 动态规划简单题 
    
- 有的题目简单到,题目描述中已经告诉你状态转移方程了,其他的没有,也可以比较简单的想出来。
 
 - 01背包问题 
    
- 物品只能使用一次,状态转移方程比较固定
 二维数组解法,一定要掌握一维数组解法,二维数组的优化,一刷了解即可。- 01背包一般用来解决 
      
- 能否装满背包问题
 - 背包最多可以装多少的问题
 
 
 - 完全背包问题 
    
- 物品可以无限次使用
 - 完全背包一般用来解决 
      
- 装满背包有几种方法
 - 装满背包所需物品的最小个数
 
 
 - 打家劫舍问题 
    
- 普通的打家劫舍
 - 成环的打家劫舍
 - 树形的打家劫舍
 
 - 买卖股票问题 
    
- 经典中的经典
 
 - 子序列问题 
    
- 不连续子序列
 - 连续子序略
 - 编辑距离问题
 - 回文问题
 
 
 - 动态规划简单题 
    
 
2.1.10、单调栈

- 1、一刷被跳过的题目: 
  
无,没有漏刷的
 - 2、单调栈的刷题技巧: 
  
- 单调递增问题
 - 单调递减问题
 
 
2.2、做得好的
在平时繁忙的工作中坚持下来,真的很值得高兴。这其实不难,关键在于是否有足够的动力。清明假期期间,我出去旅游了几天,差点就放弃了。幸好,还是坚持了下来,假期花了2天时间,也跟上了进度,并没有半途而废。给自己点个赞。
2.3、做得不好的
-  
有些题没有真正理解:有些题,看了题解还是不会,为了跟上进度,也只是把答案一抄完事,其实还是没有真正理解的,这点需要批评一下。
1.1.例如二叉树的迭代遍历,动态规划中的股票问题(主要是那个最多次的和编辑距离问题)。 -  
每周总结没有坚持:回看了一下,每周总结我只写了一次,后面都是偷懒没写。没有画出自己的理解,没有用思维导图总结解题思路和方法。
 
2.4、其他的碎碎念
坚持下来不容易,检验成果就看今年跳槽情况了,装的很努力没有用,坚持更新了博客也并不代表所有题目我真的全部掌握了,有句话说得好,实践出真知。
三、 为什么要刷题
3.1、面向大厂
22年面试过Lanzanda和tengxun,都是倒在了算法这一关。刷题主要就是为了面试,为了更好的薪水,另一方面也是年内有跳槽的想法。要有更好的薪资,只能往大厂跳,那么算法是必不可少的,所以必须刷。
四、 未来计划
4.1、二刷计划
- 算法练习不能只做一遍,初次刷题主要是熟悉不同题型的解题方法,但随着时间推移,一些解法可能会渐渐遗忘。解决这个问题的办法很简单:多刷多练。我打算先休息半个月到一个月,然后设定一个小目标,
从5月中下旬开始第二轮刷题。 - 在休息期间,多花点时间复习自己之前写的博客,这也是一种很好的复习方式。
 - 还有一些题目,一刷暂时跳过了,二刷再补回去。
 
4.2、leetcode100热题计划
leetcode上有热提题100道,感觉只刷了代码随想录可能不太够,这个具体看时间吧。看是二刷代码随想录的时候一起刷热题100,还是单独抽出时间刷。目前没有具体的时间表,过了五一再看。
 
五、 感谢
最后,感谢卡尔大佬,跟着刷学习到了很多,卡尔大佬的视频和pdf对我的刷题提供了巨大的帮助。强烈推荐。
 pdf:某度直接搜【代码随想录】
 视频:b站直接搜【代码随想录】






![[大模型]TransNormerLLM-7B FastApi 部署调用](https://img-blog.csdnimg.cn/direct/bcc645ec8fce4d7a911690b33de6c4f9.png#pic_center)











