| 顺序 | 知识点 |
|---|---|
| 12. 整数转罗马数字 | |
| 13. 罗马数字转整数 | |
| 26. 删除有序数组中的重复项 | |
| 92. 反转链表 II | |
| 93. 复原 IP 地址 | |
| 80. 删除有序数组中的重复项 II | |
| 83. 删除排序链表中的重复元素 | |
| 141. 环形链表 | |
| 160. 相交链表 | |
| 203. 移除链表元素 | 哨兵结点 |
| 顺序 | 知识点 |
|---|---|
| offer01.赋值运算符函数 | 自己实现一个MyString类 |
| offer02.单例模式 | 单例模式、线程安全 |
| offer03.数组中重复数字的查找 | HashSet、置换 |
| offer04.二维数组中的查找 | 二维数组的分区查找 |
| offer05.替换空格 | string的遍历、string的replace函数、双指针法 |
| offer06.从尾到头打印链表 | 栈、回溯、vector的insert方法 |
| offer07.重建二叉树 | 递归、@@@迭代 |
| offer09.用两个栈实现队列 | 栈、队列 |
| offer10-I.斐波那契数列 | 迭代,递归 |
| offer10-II.青蛙跳台阶问题 | 动态规划 |
| offer11.旋转数组的最小数字 | 二分查找 |
| offer12.矩阵中的路径 | |
| offer16.数值的整数次方 | 快速幂+递归/迭代 |
| offer17.打印从1到最大的n位数 | 用字符串解决大数越界问题 |
| Offer 18. 删除链表的节点 | 链表、双指针 |
| Offer21.调整数组顺序使奇数位于偶数前面 | 双指针 |
| Offer 22. 链表中倒数第k个节点 | |
| Offer 24. 反转链表 | 迭代、@@@递归 |
| Offer25. 合并两个排序的链表 | |
| 链表中的哨兵节点 | |
| offer26.树的子结构 | |
| offer27.二叉树的镜像 | 二叉树 |
| Offer 29. 顺时针打印矩阵 | 不难但是很恶心 |
| Offer 30. 包含min函数的栈 | |
| Offer 31. 栈的压入、弹出序列 | 辅助栈&&双目运算符的结合律是先左 |
| Offer 32-I. 从上到下打印二叉树 | 辅助队列 |
| Offer 32-II. 从上到下打印二叉树 | |
| Offer 32-III. 从上到下打印二叉树 | |
| Offer 33. 二叉搜索树的后序遍历序列 | dfs(深度优先搜索)+递归 |
| Offer 34. 二叉树中和为某一值的路径 | 深度优先搜索 + 回溯法、广度优先搜索 + unordered_map |
| Offer 35. 复杂链表的复制 | 辅助哈希/拼接+拆分 |
| Offer 36. 二叉搜索树与双向链表 | |
| Offer 38. 字符串的排列 | 回溯法、剪枝、固定字符交换+set 这个思路挺头大 |
| Offer 39. 数组中出现次数超过一半的数字 | 排序、unordered_map、摩尔投票 |
| Offer 40. 最小的k个数 | |
| 排序、堆排、快排,这道题精髓应该是topk的堆排 | |
| offer42. 连续子数组的最大和 | 动态规划 |
| offer43. 数字1的个数 | 数学方法 |
| offer45. 把数组排成最小的数 | |
| offer49.丑数 | |
| offer50.第一个只出现一次的字符 | 双指针,使用哈希表存储频数 |
| offer51.数组中的逆序对 | 双指针超时,用分治法更优 |
| offer52.两个链表的第一个公共节点 | 双指针 |
| Offer 53 - I. 在排序数组中查找数字 I | 二分查找、哈希、遍历 |
| Offer 53 - II. 0~n-1中缺失的数字 | |
| Offer 55 - I. 二叉树的深度 | dfs、bfs |
| Offer 56 - I. 数组中数字出现的次数 | 分组异或、用set来辅助+assign() |
| Offer 57. 和为s的两个数字 | 双指针、哈希 |
| Offer 57 - II. 和为s的连续正数序列 | 暴力枚举、双指针 |
| Offer 58 - I. 翻转单词顺序 | 原地置换 |
| Offer 58 - II. 左旋转字符串 | 三次反转、字符串拼接与切分 |
| Offer 59 - I. 滑动窗口的最大值 | 优先队列(堆)、单调队列 |
| Offer 60. n个骰子的点数 | 动态规划 |
| Offer 61. 扑克牌中的顺子 | set+遍历、排序+遍历 |
| Offer 63. 股票的最大利润 | 双指针遍历(超时)、动态规划 |
| Offer 64. 求1+2+…+n | 逻辑运算符的短路性质 |
| Offer 65. 不用加减乘除做加法 | 位运算 |
| Offer 67. 把字符串转换成整数 | |
| Offer 68 - I. 二叉搜索树的最近公共祖先 | 利用二叉搜索树中序遍历递增的特点 |
| Offer 68 - II. 二叉树的最近公共祖先 | 递归、用哈希表记录父节点 |
| 类型 | 题目 | 知识点 |
|---|---|---|
| 链表 | ||
| 21. 合并两个有序链表 | ||
| 206. 反转链表 | ||
| 二叉树 | ||
| 226. 翻转二叉树 | ||
| 102. 二叉树的层序遍历 | ||
| 105. 从前序与中序遍历序列构造二叉树 | ||
| 106. 从中序与后序遍历序列构造二叉树 | ||
| 652. 寻找重复的子树 | ||
| 二叉搜索树 | ||
| 783. 二叉搜索树节点最小距离 | 中序遍历 | |
| 114. 二叉树展开为链表 | ||
| 116. 填充每个节点的下一个右侧节点指针 | ||
| 654. 最大二叉树 | ||
| 230. 二叉搜索树中第K小的元素 | ||
| 538. 把二叉搜索树转换为累加树 | ||
| 450. 删除二叉搜索树中的节点 | ||
| 701. 二叉搜索树中的插入操作 | ||
| 700. 二叉搜索树中的搜索 | ||
| 98. 验证二叉搜索树 | ||
| 297. 二叉树的序列化与反序列化 | ||
| 236. 二叉树的最近公共祖先 | ||
| 222. 完全二叉树的节点个数 | ||
| 动态规划 | ||
| 122. 买卖股票的最佳时机 II | 动态规划、贪心算法 | |
| 位运算 | ||
| 191. 位1的个数 | 通过n&(n-1) | |
| 190.颠倒二进制位 | 这个地方循环里的算式看了答案 | |
| 二分查找 | ||
| 153. 寻找旋转排序数组中的最小值 | 二分查找 | |
| 154. 寻找旋转排序数组中的最小值 II | 二分查找 | |
| 排序 | ||
| 347. 前 K 个高频元素 | 堆排 | |
| 692. 前K个高频单词 | 堆排 | |
| 数学题 | ||