经常会忘记自己学到哪里 ,所以制定了一个学习计划,希望狗哥能带我好好学习 。

数组和链表才是「结构基础」
数据结构是工具,算法是通过合适的工具解决问题的方法。
根据数据结构和算法思想的分类,《剑指 Offer》可以分为以下几种标签:

链表

  • 06 — 从尾到头打印链表
  • 18 — 删除链表的节点
  • 22 — 链表中倒数第 K 个节点
  • 24 — 反转链表
  • 35 — 复杂链表的复制
  • [ ] 52 — 两个链表的第一个公共结点

    栈 & 队列

  • [ ] 09 — 用两个栈实现队列

  • 30 — 包含 min 函数的栈
  • 59II — 队列的最大值
  • [ ] 59I — 滑动窗口的最大值

  • [ ] 07 — 重建二叉树

  • 26 — 树的子结构
  • 27 — 二叉树的镜像
  • 28 — 对称的二叉树
  • 32I — 从上往下打印二叉树
  • 32I — 从上往下打印二叉树II
  • 32II — 从上往下打印二叉树III
  • 34 — 二叉树中和为某一值的路径
  • 37 — 序列化二叉树
  • 54 — 二叉搜索树的第 K 大节点
  • 55I — 二叉树的深度
  • 55II —平衡二叉树
  • 68I — 二叉搜索树的最近公共祖先
  • [ ] 68II — 二叉树的最近公共祖先

  • [ ] 40 — 最小的 K 个数

  • [ ] 41 — 数据流中的中位数

    哈希表

  • [ ] 03 — 数组中重复的数字

  • 48 — 最长不含重复字符的子字符串
  • [ ] 50 — 第一个只出现一次的字符

    动态规划

  • [ ] 14I — 剪绳子

  • 14II — 剪绳子II
  • 19 — 正则表达式匹配
  • 42 — 连续子数组的最大和
  • 47 — 礼物的最大值
  • [ ] 63 — 股票的最大利率

    二分查找

  • [ ] 01 — 旋转数组的最小数字

  • 53I — 在排序数组中查找数字 I
  • [ ] 53II — 0 ~ n-1 中缺失的数字

    回溯算法

  • [ ] 38 — 字符串的排列

    分治算法

  • [ ] 25 — 合并两个排序的链表

  • [ ] 36 — 二叉搜索树与双向链表

    排序

  • [ ] 45 — 把数组排成最小的树

    位运算

  • [ ] 15 — 二进制中 1 的个数

  • 39 — 数组中出现次数超过一半的数字
  • 其他题目