手把手带你刷剑指Offer
前言
该文章刷剑指offer 的方式不是按照题的顺序去刷的,而是在LeetCode 上有一个剑指offer 的学习计划,我是按照那个计划刷的。这个计划总结的比较系统,给我们分好类了,刷起来比较舒服,一个月的学习计划,大家一定要坚持刷完!
第一天 栈与队列(简单)2022/2/26
题目 | 题解链接 |
---|---|
剑指 Offer 09. 用两个栈实现队列 | 【剑指Offer 09】通俗易懂的题意和题解 |
剑指 Offer 30. 包含min函数的栈 | 【剑指Offer 30】两个栈解决获取最小值 |
第二天 链表(简单)2022/2/27
题目 | 解题链接 |
---|---|
剑指 Offer 06. 从尾到头打印链表 | 【剑指Offer 06】 栈和递归巧妙解题 |
剑指 Offer 24. 反转链表 | 【剑指Offer 24】从迭代到递归解题 |
剑指 Offer 35. 复杂链表的复制 | 【剑指Offer 35】哈希表、拆分解题 |
第三天 字符串(简单) 2022/2/28
题目 | 解题链接 |
---|---|
剑指 Offer 05. 替换空格 | 【剑指Offer 05】StringBuilder解题 |
剑指 Offer 58 - II. 左旋转字符串 | 【剑指Offer 58 - II】字符串拆分拼接解题 |
第四天 查找算法(简单) 2022/3/1
题目 | 解题链接 |
---|---|
剑指 Offer 03. 数组中重复的数字 | 【剑指offer 3 】详细的解题原理(赋值顺序十分重要!!!) |
剑指 Offer 53 - I. 在排序数组中查找数字 I | 【剑指Offer 53 - I】暴力、二分解题 |
剑指 Offer 53 - II. 0~n-1中缺失的数字 | 【剑指Offer 53 - II】二分查找解题 |
第五天 查找算法(中等)2022/3/2
题目 | 解题链接 |
---|---|
剑指 Offer 04. 二维数组中的查找 | 【剑指Offer 04】暴力 + 线性查找巧妙解题 |
剑指 Offer 11. 旋转数组的最小数字 | 【剑指Offer 11】二分查找,需要去重 |
剑指 Offer 50. 第一个只出现一次的字符 | 【剑指Offer 50】哈希储存Boolean巧妙解题 |
第六天 搜索与回溯算法(简单) 2022/3/3
题目 | 解题链接 |
---|---|
面试题32 - I. 从上到下打印二叉树 | 【剑指Offer 32 - I】层序遍历BFS 解题(中等?) |
剑指 Offer 32 - II. 从上到下打印二叉树 II | 【剑指Offer 32 - II】层序遍历(for循环分层打印巧解题!!!) |
剑指 Offer 32 - III. 从上到下打印二叉树 III | 【剑指Offer 32 - III】层序遍历+奇偶判定解题 |
第七天 搜索与回溯算法(简单)2022/3/4
题目 | 解题链接 |
---|---|
剑指 Offer 26. 树的子结构 | [【剑指Offer 26 】浅显易懂的递归思路(详细过程分析!!)](【剑指Offer 26 】浅显易懂的递归思路(详细过程分析!!)) |
剑指 Offer 27. 二叉树的镜像 | 【剑指Offer 27】 简单递归 |
剑指 Offer 28. 对称的二叉树 | 【剑指Offer 28】递归(不用求镜像,直接比较!!) |
第八天 动态规划(简单) 2022/3/5
题目 | 解题链接 |
---|---|
剑指 Offer 10- I. 斐波那契数列 | 【剑指Offer 10 - I】循环解题 |
剑指 Offer 10- II. 青蛙跳台阶问题 | 【剑指Offer 10 - II】“青蛙 == 斐波那契” |
剑指 Offer 63. 股票的最大利润 | 【剑指Offer 63】暴力 + 动态规划 |
第九天 动态规划(中等) 2022/3/6
题目 | 解题链接 |
---|---|
剑指 Offer 42. 连续子数组的最大和 | 【剑指Offer 42 】动态规划 |
剑指 Offer 47. 礼物的最大价值 | 【剑指Offer 47】动态规划,两种思路,有得必有失!!! |
第十天 动态规划(中等)2022/3/7
题目 | 解题链接 |
---|---|
剑指 Offer 46. 把数字翻译成字符串 | 【剑指Offer 46】动态规划(手把手带你推动态转移方程!!!) |
剑指 Offer 48. 最长不含重复字符的子 | 【剑指Offer 48】滑动窗口解题 |
第十一天 双指针(简单)2022/3/8
题目 | 解题链接 |
---|---|
剑指 Offer 18. 删除链表的节点 | 【剑指Offer 18】利用前驱节点和后继节点解题 |
剑指 Offer 22. 链表中倒数第k个节点 | 【剑指Offer 22】判断删除长度 + 双指针解题(详细题解步骤!!!) |
第十二天 双指针(简单) 2022/3/9
题目 | 解题链接 |
---|---|
剑指 Offer 25. 合并两个排序的链表 | 【剑指Offer 25】循环合并(十分好用!!) |
剑指 Offer 52. 两个链表的第一个公共节 | 【剑指 Offer 52】她逃,他追,她插翅难飞 |
第十三天 双指针(简单) 2022/3/10
题目 | 解题链接 |
---|---|
剑指 Offer 21. 调整数组顺序使奇数位于 | 【剑指Offer 21】双指针收缩区间解题 |
剑指 Offer 57. 和为s的两个数字 | 【剑指Offer 57】简单的双指针解题 |
剑指 Offer 58 - I. 翻转单词顺序 | 【剑指Offer 58 - I】双指针解题 |
第十四天 搜索与回溯算法(中等) 2022/3/11
题目 | 解题链接 |
---|---|
剑指 Offer 12. 矩阵中的路径 | 【剑指Offer 12】DFS 深度优先搜索、剪枝 |
剑指 Offer 13. 机器人的运动范围 | 【剑指Offer 13】深度优先遍历,很简洁(通俗易懂的解题思路!!) |
第十五天 搜索与回溯算法(中等) 2022/3/12
题目 | 解题链接 |
---|---|
剑指 Offer 34. 二叉树中和为某一值的路径 | 【剑指Offer 34】 回溯解题 |
剑指 Offer 36. 二叉搜索树与双向链表 | 【剑指Offer 36】双向链表、中序遍历 |
剑指 Offer 54. 二叉搜索树的第k大节点 | 【剑指Offer 54】二叉搜索树遍历,从大到小(右 - > 中 -> 左) |
第十六天 排序(简单) 2022/3/13
题目 | 解题链接 |
---|---|
剑指 Offer 45. 把数组排成最小的数 | 【剑指Offer 45】自定义排序 |
剑指 Offer 61. 扑克牌中的顺子 | 【剑指Offer 61】利用牌组中的最大值减最小值小于5解题 |
第十七天 排序(中等) 2022/3/14
题目 | 解题链接 |
---|---|
剑指 Offer 40. 最小的k个数 | 【剑指Offer 40】一文带你快速理解快排(新增快排优化!!) |
剑指 Offer 41. 数据流中的中位数 | 【剑指Offer 41】大顶堆小顶堆解题(双桶算法) |
第十八天 搜索与回溯算法(中等) 2022/3/15
题目 | 解题链接 |
---|---|
剑指 Offer 55 - I. 二叉树的深度 | 【剑指Offer 55 - I】递归 + 层序遍历(详细解题步骤分析!!) |
剑指 Offer 55 - II. 平衡二叉树 | 【剑指Offer 55 - II】递归解题(详细分析!!) |
第十九天 搜索与回溯算法(中等) 2022/3/16
题目 | 解题链接 |
---|---|
剑指 Offer 64. 求1+2+…+n | 【剑指Offer 64】短路终止递归 |
剑指 Offer 68 - I. 二叉搜索树的最近公共祖 | 【剑指Offer 68 -I】迭代 + 递归解题 |
剑指 Offer 68 - II. 二叉树的最近公共祖先 | 【剑指Offer 68 - II】递归解题 |
第二十天 分治算法(中等) 2022/3/17
题目 | 解题链接 |
---|---|
剑指 Offer 07. 重建二叉树 | 【剑指Offer 07】一步步分析递归区间(详细题解!!) |
剑指 Offer 16. 数值的整数次方 | 【剑指Offer 16】巧妙减少循环次数,避免超时! |
剑指 Offer 33. 二叉搜索树的后序遍历序列 | 【剑指Offer 33】分治+递归 |
第二十一天 位运算(简单) 2022/3/18
题目 | 解题链接 |
---|---|
剑指 Offer 15. 二进制中1的个数 | 【剑指Offer 15】二进制基本运算(汉明重量) |
剑指 Offer 65. 不用加减乘除做加法 | 【剑指Offer 65】位运算解题 |
第二十二天 位运算(中等) 2022/3/19
题目 | 解题链接 |
---|---|
剑指 Offer 56 - I. 数组中数字出现的次数 | 【剑指Offer 56 - I】位运算(通俗易懂的题解!!) |
剑指 Offer 56 - II. 数组中数字出现的次数 | 【剑指Offer 56 - II】数组中所有数的二进制位之和与3 取模 |
第二十三天 数学(简单) 2022/3/20
题目 | 解题链接 |
---|---|
剑指 Offer 39. 数组中出现次数超过一半的 | 【剑指Offer 39】 投票法真绝了! |
剑指 Offer 66. 构建乘积数组 | 【剑指Offer 66】先左后右记录乘积 |
第二十四天 数学(中等) 2022/3/21
题目 | 解题链接 |
---|---|
剑指 Offer 14- I. 剪绳子 | 【剑指Offer 14 -I】动态规划很好理解 |
剑指 Offer 57 - II. 和为s的连续正数序列 | 【剑指Offer 57 - II】滑动窗口解题(清晰图解) |
剑指 Offer 62. 圆圈中最后剩下的数字 | 换个角度举例解决约瑟夫环 |
第二十五天 模拟(中等) 2022/3/22
题目 | 解题链接 |
---|---|
剑指 Offer 29. 顺时针打印矩阵 | 【剑指Offer 29】顺时针循环打印(详细代码注释) |
剑指 Offer 31. 栈的压入、弹出序列 | 【剑指Offer 31】模拟法解题 |
第二十六天 字符串(中等) 2022/3/23
题目 | 解题链接 |
---|---|
剑指 Offer 20. 表示数值的字符串 | 【剑指Offer 20】多条件判断比较好理解 |
剑指 Offer 67. 把字符串转换成整数 | 【剑指Offer 67】详细代码注释,以及难点分析 |
第二十七天 栈与队列(困难) 2022/3/24
题目 | 解题链接 |
---|---|
剑指 Offer 59 - I. 滑动窗口的最大值 | 【剑指Offer 59 - I】暴力法 + 双向队列 |
剑指 Offer 59 - II. 队列的最大值 | 【剑指Offer 59 - II】清晰图解,看不懂你打我!!! |
第二十八天 搜索与回溯算法(困难) 2022/3/25
题目 | 解题链接 |
---|---|
剑指 Offer 37. 序列化二叉树 | 【剑指Offer 37】DFS巧妙解题 |
剑指 Offer 38. 字符串的排列 | 参考官方题解 |
第二十九天 动态规划(困难) 2022/3/26
题目 | 解题链接 |
---|---|
剑指 Offer 19. 正则表达式匹配 | 参考官方题解 |
剑指 Offer 49. 丑数 | 参考官方题解 |
剑指 Offer 60. n个骰子的点数 | 参考官方题解 |
第三十天 分治算法(困难) 2022/3/27
题目 | 解题链接 |
---|---|
剑指 Offer 17. 打印从1到最大的n位数 | 参考官方题解 |
剑指 Offer 51. 数组中的逆序对 | 参考官方视频题解 |
第三十一天 数学(困难) 2022/3/28
题目 | 解题链接 |
---|---|
剑指 Offer 14- II. 剪绳子 II | 参考官方题解 |
剑指 Offer 43. 1~n 整数中 1 出现的次数 | 参考官方题解 |
剑指 Offer 44. 数字序列中某一位的数字 | 参考官方题解 |
心得体会 & 未来展望
剑指offer后面我水了几天,我准备在二刷的时候补充题解,也算是给自己留个二刷的念头,今天也算是老老实实打卡结束了,也拿到了剑指offer的勋章。
打卡了一个月,这一个月自己不仅在算法上面成长了不少。而且也写了不少我自认为比较优质的题解,自己在写某些题解的过程中也花了不少时间去画图。有些题解也有不少阅读量,截止到目前,我的力扣阅读总数到了 37K。虽然不多,但对我来说挺有成就感的。当然也有一些水文,原因是有的时候某个题理解的并不透彻,不仅写不出来好的文章,反倒容易误导大家,我就索性给了一些代码和注释,没有过多去说明。并且很多题的题解已经很棒了,我感觉写出来并没有什么比较新颖和特别的地方,所以后面那几个暂时都还没去写题解。
刷题过程中也有比较有意思的经历,有个同学问我算法,我也是没想到,可能他看到了我那个题解,有点不懂。没想到我也能在算法方面帮到别人,还是挺开心的。
剑指offer刷了一遍下来,我个人觉得他的覆盖面是非常广的,并且很多“简单题”他并不简单,里面的题都是值得我们细细去品味的,当然对我们面试也有很大的帮助。
目前忙于春招找实习,所以不打算最近就开始二刷,我想先放一放。专心复习八股查漏补缺。下次二刷的时候我会把题解中存在的不足的地方再补充补充,这样自己复习起来也快的多。