为何推荐剑指 Offer ?
开始刷题前,学长们清一色地向我力荐剑指 Offer 。一年以来,我已将剑指 Offer 刷了数遍,这使我在科研学习、秋招求职中受益匪浅。总体上看,剑指 Offer 或许是最友好、最适合求职初学者的题库之一,优点如下:
1. 知识全面
LeetCode 的题库庞大,以下每个分类都能筛选出数百道问题。而由于精力有限,我们只能做完部分题目。因而我们需要解决两个难题:从哪个分类开始做题?每个分类做哪些题?
- 数据结构: 数组、栈、队列、字符串、链表、树、图、堆、哈希表、……
- 算法: 动态规划、回溯算法、查找算法、搜索算法、贪心算法、分治算法、位运算、双指针、排序、模拟、数学、……
剑指 Offer 的短短 75 道题,涵盖了以上所有分类,能够帮助我们 快速入门 。
2. 题目典型
做典型题目可以事半功倍,无论是对于面试准备,还是知识积累。剑指 Offer 原题活跃在各大公司的笔面试中。根据笔者亲身经历,面试手撕算法 的遭遇概率较高,笔试 相对较低(但有许多原题的变种)。
3. 资料完备
对于初学者来说,遇到新的题目常常无从下手。因此,优良的题解资料尤其重要,其很大程度上 决定了刷题效率和质量 。剑指 Offer 热度较高,无论是在 LeetCode 的题解区和评论区,还是在搜索引擎和各大平台中,都可以找到丰富的学习资料。
剑指 Offer 系列题解
经过笔者近三个月的日夜奋斗,已更新 近 70 道原创题解 ,希望可以帮助到像我当初同样一头雾水的同学。
题解中均介绍最优解决方法之一(部分题目介绍多解法),内容包括:
- 解题思路: 介绍解法的来龙去脉,解法往往是从简单的想法、数据结构的定义、算法的原理导出的。
- 算法流程: 可理解为详细的代码注释,致力于帮助各位养成结构化、模块化的代码编写习惯。
- 复杂度分析: 时间和空间复杂度是评价解法优劣性的最有力的尺度之一,且面试经常会被问到。
- 清晰配图: 帮助各位理解解法的重难点,并提供测试样例的可视化运行。
- 代码: 笔者只会写 Python 3 / Java ,其他语言代码可在题解评论区寻找,感谢大佬们的无私分享。
若读完题解仍有疑问,推荐各位转至题解评论区,很大概率可以找到满意的答案。
「 剑指 Offer 题库 」 追风赶月莫停留,开始做题叭!
「 @Krahets (jyd) 」 敬请关注力扣主页,欢迎评论、分享、点赞,我会尽快回复。
由于水平有限,题解错漏缺点在所难免,烦请各位大佬指正。
下表划分了解决各题使用的算法。由于题目往往有多种解法,本表格只列举最优解法(时间与空间复杂度最低)的对应算法。
下表列举了各题涉及到的主要的数据结构。
后记:
于我而言,力扣平台带来的已不单单是题目本身,更多的是来自大佬的教诲、同学的探讨、读者的支持、深夜顿悟的欣喜、数次想逃避放弃时的加油鼓励。
在很多个前路尚未尘埃落定的焦躁的盛夏夜晚,逐渐成长学会和不良情绪对抗的纠结的初秋午后,以及最终得到肯定收货结果的冬日清晨,力扣见证着我的进步和前行。
人生的新阶段即将到来,利用自由时间把题目一一整理起来,希望和大家共勉,也希望自己的小小努力也能给别人带去小小帮助。这也应该是这段日子的另外的意义了吧。
本文献予像我一样热忱而迷茫的初学者。
扬帆,起航!


