一、使用了int dx[ ] = {-1, 0, 1, 0}, dy[ ] = {0, 1, 0, -1} 及类似方法的题
1、八数码 $\color{red}{(面试题)}$
2、 蛇形矩阵 $\color{red}{(面试题)}$ 题解
3、螺旋矩阵I 螺旋矩阵II
4、走迷宫
5、矩阵中的路径
6、 机器人的运动范围
7、 顺时针打印矩阵
8、移动骑士
二、二分法
① 最大值最小化或最小值最大化
② 分治
③ 正常二分
三、双指针
① 滑动窗口(i = 0, j = 0)
-
滑动:说明这个窗口是移动的,也就是移动是按照一定方向来的。
-
窗口:窗口大小并不是固定的,可以不断扩容直到满足一定的条件;也可以不断缩小,直到找到一个满足条件的最小窗口;当然也可以是固定大小。 `
2、长度最小的子数组
② 单调性扫描
1、二维数组中的查找
③ 普通双指针算法
1、 最长回文子串 (分奇偶两种情况)
2、 调整数组顺序使奇数位于偶数前面
四、动态规划
① 一维数组
② 二维数组
求数量
1、小红的字符串计数
求最大或最小值
1、小明的迷宫
bool型的状态表示f[ ][ ]
1、 正则表达式匹配
五、链表
1、 从头到尾打印链表
2、 两数相加
3、 在O(1)时间删除链表结点
4、 删除链表中重复的节点
5、 链表中倒数第k个节点
6、 链表中环的入口结点 $\color{red}{(面试题)}$
7、 反转链表 $\color{red}{(面试题)}$
8、 合并两个排序的链表 $\color{red}{(面试题)}$
9、 树的子结构
10、 复杂链表的复刻 题解
六、二叉树
1、 重建二叉树 $\color{red}{(面试题)}$
2、 二叉树的下一个节点 $\color{red}{(面试题)}$
3、 删层子树
4、 异或传递
5、 二叉搜索子树的最大键值和
6、 找出克隆二叉树中的相同节点
7、二叉树的镜像
8、 对称的二叉树
9、 二叉搜索树的后序遍历序列 题解
10、 二叉树中和为某一值的路径 题解
11、 二叉搜索树与双向链表 题解
12、 序列化二叉树 题解
13、 之字形打印二叉树 题解
14、 分行从上往下打印二叉树 题解
15、 不分行从上往下打印二叉树 题解
七、哈希表
① 字符串前缀哈希法
1、 字符串哈希
2、 回文子串的最大长度 $\color{red}{(面试题)}$
② 普通哈希
1、 出现至少k次的小写字母
2、 两数之和
八、单调栈
1、 接雨水 $\color{red}{(面试题)}$
2、 单调栈
九、回溯
1、 n皇后 $\color{red}{(面试题)}$
十、递归
① 普通递归
1、寻找两个正序数组的中位数
2、
② 深度优先搜索
1、 数字排列 题解
2、 排列数字 题解
3、 全排列I $\color{red}{(面试题)}$
4、 全排列II $\color{red}{(面试题)}$
十一、数学类
①找规律
1、 Z字形变换
2、 整数反转
3、 小红的二进制删数字
4、 剪绳子
② 快速幂
十二、栈
1、 用两个栈实现队列
2、 栈的压入、弹出序列
3、 包含min函数的栈
十三、KMP
1、 KMP字符串
十四、排序
1、快速排序
十五、普通for循环遍历
1、 找出数组中重复的数字
2、 替换空格
3、 二进制中1的个数
4、 表示数值的字符串
5、 数组中出现次数超过一半的数字 $\color{red}{(面试题)}$ 题解