(梳理框架主要由up主提供)
前言
- 解题思路是解题过程中最关键的一步,即使最终没做出来,能大概知道解题思路甚至有多个解题思路也是挽救方法
- 以下提及题目不止对应技巧一种思路,但建议先按对应思路去解题,再考虑其他思路优化
- 个人认为最重要的标了★
- 题目尽量按难度从低到高排序,题目挑选后续也会随着我的刷题经验进行调整
双指针
双指针常用于数组、链表两种线性表(有序)数据结构相关的题,具体又分为
- 相向双指针:
- 两个指针一头一尾往中间移动
- 多应用于数组的连续子序列或两两组合,有规律的缩小范围
- 单向双指针
- 两个指针往同一个方向移动(没想到什么场景后续补充吧)
- 快慢指针:
- 通常慢指针向前走一步,快指针向前走两步
- 多用于链表、因为链表无法直接通过索引访问
- 通常利用快慢指针找到链表的中点或公共节点
881. 救生艇
11. 盛最多水的容器
141. 环形链表
二分法
常用于有序数组,取中点二分后按一定规则只取其中一边再继续二分,多用于查数
704. 二分查找
35. 搜索插入位置
162. 寻找峰值
滑动窗口
常用于连续子序列的长度、统计量例如总和、计数等最优值问题
209. 长度最小的子数组
1456. 定长子串中元音的最大数目
递归★
递归是指一个函数在运行时调用自己,框架如下
def recursion(params): #1.函数输入参数
if params==1: #2.递归终止条件
return 0
params=params-1
res=