经常会忘记自己学到哪里 ,所以制定了一个学习计划,希望狗哥能带我好好学习 。
数组和链表才是「结构基础」
数据结构是工具,算法是通过合适的工具解决问题的方法。
根据数据结构和算法思想的分类,《剑指 Offer》可以分为以下几种标签:
链表
- 06 — 从尾到头打印链表
- 18 — 删除链表的节点
- 22 — 链表中倒数第 K 个节点
- 24 — 反转链表
- 35 — 复杂链表的复制
-
栈 & 队列
[ ] 09 — 用两个栈实现队列
- 30 — 包含 min 函数的栈
- 59II — 队列的最大值
-
树
[ ] 07 — 重建二叉树
- 26 — 树的子结构
- 27 — 二叉树的镜像
- 28 — 对称的二叉树
- 32I — 从上往下打印二叉树
- 32I — 从上往下打印二叉树II
- 32II — 从上往下打印二叉树III
- 34 — 二叉树中和为某一值的路径
- 37 — 序列化二叉树
- 54 — 二叉搜索树的第 K 大节点
- 55I — 二叉树的深度
- 55II —平衡二叉树
- 68I — 二叉搜索树的最近公共祖先
-
堆
[ ] 40 — 最小的 K 个数
-
哈希表
[ ] 03 — 数组中重复的数字
- 48 — 最长不含重复字符的子字符串
-
动态规划
[ ] 14I — 剪绳子
- 14II — 剪绳子II
- 19 — 正则表达式匹配
- 42 — 连续子数组的最大和
- 47 — 礼物的最大值
-
二分查找
[ ] 01 — 旋转数组的最小数字
- 53I — 在排序数组中查找数字 I
-
回溯算法
-
分治算法
[ ] 25 — 合并两个排序的链表
-
排序
-
位运算
[ ] 15 — 二进制中 1 的个数
- 39 — 数组中出现次数超过一半的数字
- 其他题目
