剑指 offer 怎么刷?

来吧,和我一起图解剑指 Offer。

全部题目都提供动画解题思路和完整的代码注释,不用担心看不懂!

程序员应该都听说过《剑指Offer》这本书吧,基本上属于找工作必备,这边书系统整理了面试会考察的基础知识、代码质量、解题思路、优化效率和综合能力这 5 个考点,如果刚开始练习算法题目,《剑指 Offer》是个不错的切入点。

通过系统的刷《剑指 Offer》培养一个良好的刷题习惯,别看里面的题目仅仅只有几十道,但确是大厂算法面试的常考题,刷透这些题,虽然不能保证你百分百通过算法面试环节,却足够让你做其它题目的时候更加有熟悉感,更好的思考。

刷题有一个很重要的技巧就是按照标签来刷,在某个时间段内只刷相对应的题目,这种做法可以极大的提高刷题的速度,而且能带来更好的效果。

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 — 数组中出现次数超过一半的数字
  • 其他题目

补充一下刷题攻略:

刷题大概可以分为 4 个阶段。

1、纯小白,不知道怎么刷题,对很多概念都很陌生,各种数据结构和知识点几乎完全不懂,打开 LeetCode 第一题,满头问号。

有人相爱、有人夜里开车看海、有人 LeetCode 第一题都做不出来。

2、算法上基本已经入门,Easy 可以做出来,Medium 纠结半天也能有头绪,但基础不牢,比如字符转字符串还得 Google 一下。

3、刷了几百道题后,总结了自己的解题模板,参加周赛有时候甚至可以全部完成。

4、开始以 beat 100% 作为 AC 的目标了。

就目前的算法面试大环境来说,能达到第二阶段,中小公司可以应付过去了,到达第三阶段,字节、腾讯算法面试环节妥妥没问题了。

怎么样到达第三阶段?

给一下我的一些小建议吧,为了避免知乎大佬觉得我吹逼,先贴一下自己的 GitHub 地址,目前 70,000 star,全球排名 51 名。

https://github.com/MisterBooo

1、如果目标是国内大厂,那么一定要刷足够的题,不需要把 LeetCode 上 2500 道算法题都刷完,但至少刷 200 道算法高频题,这些高频题我都写了题解同时也录制了视频,

在这个链接总结了:https://www.algomooc.com/1659.html

2、面试前一周以看题为主,因为刷题也刷不了几题,多看看自己总结或者别人总结的模板,比如回溯算法模板,掌握后,几十道回溯题都不在话下。

一些模板:

3、刷题过程需要注意难度要循序渐进,算法训练是一个系统工程,需要循序渐进,太过于急功近利,反而容易因做不出难题而产生挫败感,带来反效果。

如果你本身有基础,熟练度高,那你刷简单的 LeetCode 应该是几分钟一题,几分钟一题的,花不了你多少时间。

如果你刷简单都花费很长时间,说明熟练度不够,就更应该从简单开始,然后过度到中等,再过度到困难。

并且,目前国内大厂的算法考察,基本不会超过 LeetCode 中等难度,上限难度基本都是 LeetCode 中等题里面的中等难度,所以不要太去纠结难题怪题偏题。

把高频题掌握就行了:https://www.algomooc.com/1659.html

再退一步,如果你觉得 LeetCode 的题目太难,可以先从《剑指 Offer》上的算法题开始学起。

为了帮助大家更好的入门学习算法,经过半年的积累,我给大家卷了《剑指 Offer》系列的三十道题目,结合动画的形式录制了视频,相信能帮助你更好的刷题。

地址:

4、按算法分类来选题,比如一个时间段,只刷链表题,刷得差不多的时候,接下来再刷二叉树的题。

这样做有几个很明显的好处。

一、持续地刷同个类型的题目,可以不断地巩固和加深理解,可以总结出自己的思考路径或者解题模板。

比如链表题目,就会去思考虚拟头节点、双指针、快慢指针。

二、可以更全面地接触这个数据结构,算法的各个变种,这会促使你对这个数据结构,算法的理解更加全面和深刻,学习的效率会更高。

最后,再给大家送上点干货!

下面这是一个高赞回答合集,建议大家点赞&收藏,Mark住别丢了,大学期间绝对用得上。

1、怎么学好数据结构,看下面这个回答,已经获得了 21000+ 的赞和 50000+的收藏。

2、如何系统地学习算法,看下面这个回答,已经获得了 11000+ 的赞和 26000+的收藏。

3、一份适合新手的算法刷题笔记,已经获得 4000 点赞和上万收藏。

4、谷歌工程师的 LeetCode 算法笔记是怎么样的?

5、大家一般刷满 500 道 LeetCode 题目要花多久?

6、如何系统地学习 C++ ,这个回答能帮你找到路线。

7、想要准备 Java 面试,那么这些面试题必须掌握。

赶紧点赞和收藏吧~

发表回复

相关推荐

不得不碼住的超詳細入境攻略!速領~

入境篇美國、英國、新加坡出行準備開學在即,留學生們即將啟程。由於目前疫情反復,各國都在不斷更新防疫政策。小雅整理匯總...

· 25秒前

猫咪不吃东西该怎么办?

猫咪突然不吃东西了,并不是因为他们调皮 养猫的铲屎官很多都遇到过猫咪不吃东西的情况,猫咪不吃东西的时间越长,我们越担 ...

· 49秒前

四個維度告訴你:街邊餐飲店,如何通過門頭規劃實現餐廳爆滿?​

本文大約2367字,閱讀約14分鐘昨天寫瞭關於商超裡的品牌餐飲店如何通過7次效應展示自傢的餐廳。今天我們接著聊聊,街邊的餐飲...

· 4分钟前

學信網賬號密碼找回流程

學信網長期未登錄,忘記密碼,或期間更換瞭手機號。不用擔心,我們可以通過身份證號找回。第一步,“找回用戶名”,填寫身份證...

· 5分钟前

北京科技大学考研|2024年智能科学与技术学院(研究生招生专业、考试科目、参考书目汇总

九月份了,最近我发现不少同学是刚刚开始备考,也有的同学一直埋头学习,不知道自己的目标院校已经出简章了,甚至考试科目变 ...

· 7分钟前