「剑指 Offer」是何海涛写的一本算法面试书,书中精选了 50 多道常见的程序员面试题,这些题目偏向中低难度,如果你需要在较短时间里练习算法准备面试,那「剑指 Offer」是个不错的选择,目前你可以在 LeetCode 官方网站上进行练习。
LeetCode 官方网站:https://leetcode-cn.com/problemset/lcof/
本仓库提供的解法不一定是最优解,也不一定可以考虑全部的边界情况,但可以保证能让你弄懂,每题都提供的视频描述与图片,希望这些可以帮助你在面试时,即使紧张也可以较快的回忆起该题的解法。
我目前的规划是平均一到两天提供一个视频的讲解,你可以在我的网站 AlgoMooc 观看所有视频。
Hello Offer,Let's Go !
刷题有一个很重要的技巧就是按照标签来刷,在某个时间段内只刷相对应的题目,这种做法可以极大的提高刷题的速度,而且能带来更好的效果。
1、持续地刷同个类型的题目,可以不断地巩固和加深理解。
2、可以更全面地接触这个数据结构,算法的各个变种,这会促使你对这个数据结构,算法的理解更加全面和深刻,学习的效率会更高。
根据数据结构和算法思想的分类,《剑指 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 --- 数组中出现次数超过一半的数字
-
其他题目