-
链表
- 快慢指针 找中间结点
- 链表反转
-
分治:
-
回溯/递归
- 全排列问题,用visited变量;
- 组合问题,用start变量。
- 其它
-
动态规划
-
区间型
-
[从左上角到右下角]
-
[子序列/子串:公共长度问题,都是DP,只有一个转移方程不同]
-
排序
-
桶排序
- 1365.有多少小于当前数字的数字
- 两次提交,两种方法
- 1365.有多少小于当前数字的数字
-
树
-
由 前/中/后 遍历序列,构造二叉树
-
深搜
- 二叉树的最大路径和
- 701.二叉搜索树中的插入操作
- dfs 或者 迭代
- 235.BST的最近公共祖先
- dfs 或者 递归 都可以
- 合并二叉树
- 监控二叉树
- 404.左叶子之和
- 翻转二叉树 dfs/BFS
-
二叉树深度
-
字典树
- 336.回文对(需二刷)
- 字典树基本操作
- 17.13.恢复空格(需二刷):
单词拆分
DP思路会超时👉字典树+DP- 字典树里反序插入单词
-
路径
- 二叉树路径汇总
- 路径总和II
- 返回所有sum==target路径
- 路径总和
- 是否存在一条sum==target路径
- 257.二叉树的所有路径
- dfs二叉树遍历。path在局部(不需pop)、在全局(需要pop,但是,有2个测试用例,你不知道pop多少)
- [129.所有路径:根到叶子节点数字之和]
- 方法一,类似 257题
- 保存所有路径为字符串👉数字👉求和
- 方法二
- 一边深搜,一边求和
- 方法一,类似 257题
-
[BST(binary-search-tree,二叉搜索/排序/查找树)]
-
图
-
BFS
-
输出所有路径
-
并查集
-
位运算
- 自己和自己异或 == 0
- 任何数字 异或 0 == 自己
- 389.找不同
- 136.只出现一次的数字
-
二分查找
-
- 也可以双指针
-
旋转-排序数组类
- 无重复元素-搜索target
- 有重复元素-搜索target
- 有重复元素-搜索最小数
- 遍历数组,返回第一个比首位元素小的值,就是最小值。
-
-
买卖股票类
-
堆
-
滑动窗口
-
双指针
-
模拟
-
49.字母异位词分组(方法:先把每个单词排序,再分组。排序后的单词作为Key,原单词作为value)
-
- 太简单 就不记笔记了 (1)坐标模拟x==0且y==0 (2)L==R且U==D
-
加法
-
字符串
- 459.判断 字符串 是否 由 一个子串 重复构成
- 计数二进制子串
- 没有奇技淫巧
-
栈
-
回文
- 链表
- 234.判断 是否为 回文链表
\list
里 整理 过
- 子串类
- 链表
-
矩阵
-
贪心
- 435.无重叠区间
- 先按照 区间 右端点 排序
- 435.无重叠区间
-
前缀和
- 区别是,初始化条件不同
- 区别是,一个是子数组,一个是子序列