算法方法总结
算法方法总结
- 二分法,代表题型,704. 二分查找
- 双指针法,代表题型,27. 移除元素
- 移动窗口,代表题型,209. 长度最小的子数组
- 固定间隔距离的双指针,19. 删除链表的倒数第 N 个结点
- 差速双指针,142. 环形链表 II
- for 循环遍历指针 + 首尾相向指针,15. 三数之和、18. 四数之和 - 待复习
- 首位相向指针, 344. 反转字符串
- 直接模拟,59. 螺旋矩阵 II
- 虚拟头节点,203. 移除链表元素
- 内置链表长度变量,707. 设计链表
- 递归,206. 反转链表
- 哈希:当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
- 一个字符的 ASCII 码当作下标作为哈希函数进行映射:242. 有效的字母异位词、76. 最小覆盖子串
- 如何将问题变成判断一个元素是否存在于集合中:1. 两数之和
- KMP(前缀表快速有效地回退匹配):28. 找出字符串中第一个匹配项的下标
- 栈与队列
- 栈:对称匹配类的题目 20. 有效的括号
- 队列:单调队列: 239. 滑动窗口最大值 Top-K:347. 前 K 个高频元素
- 二叉树:二叉树天生适合递归,在练习二叉树相关的题目的时候,也练习了递归的写法
- 遍历二叉树,
- 前中后序遍历:144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历
- 层序遍历:102. 二叉树的层序遍历,有很多题都是以这道题为模板进行解答。其中我觉得最容易出错的,就是 104. 二叉树的最大深度 和 111. 二叉树的最小深度
- 有的时候需要回溯,257. 二叉树的所有路径、112. 路径总和
- 遍历二叉树,