[剑指offer]“一篇压全唐”,搞定offer这一篇就够了,别多看,我心疼!(持续更新中)

写在前面

一般来说对于刷剑指offer分为几刷

  1. 速刷,不懂直接题解,获得正解。
  2. 默刷,看一遍题解,进行默写,进行巩固
  3. 日刷,每日三省吾身,隔日能刷方更进一步
  4. 月刷,在完成全部题目后,要时不时的进行回顾“思而不学则殆”,要一直动起来,刷起来,速度更是要快。“题刷百变,其意必现”

最后,我们才可以刷更多更有难度的题,但是万变不离其宗,最简单的剑指offer就是我们必修的内功!

题目题解表

剑指offer题号 题解地址 总而言之
JT1 二维数组中的查找 优雅的暴力总是那么迷人
JT2 替换空格 花里胡哨终会将时间错付
JT3 从尾到头打印链表 为了节约空间我选择自转
JT4 重建二叉树 破镜难以重圆,但是二叉树可以
JT5 用两个栈实现队列 要用魔法打败魔法
JT6 旋转数组的最小数字 谁暴力谁是傻子
JT7 Fibonacci数列 记忆化搜索很重要
JT8 跳台阶 我一眼就看出不是跳台阶
JT9 变态跳台阶 一下支棱n级台阶,真牛
JT10 矩形覆盖 万事有起因,答案其中隐
JT11 二进制中1的个数 n&(n-1)你不得不知道の含义呀0.0!
JT12 数值的整数次方 抛砖引玉我们说说【快速幂】算法!
JT13 调整数组循序使奇数位于偶数前面 过于简单
JT14 链表中倒数第k个结点 震惊!!!双指针相对运动轻松解题
JT15 反转链表 不积硅步无以至千里
JT16 合并两个排序的链表 不忘初心,方得始终
JT17 树的子结构 树的比较都是递归
JT18 二叉树的镜像 树的镜像也是递归
JT19 顺时针打印矩阵 正方形打野
JT20 包含min函数的栈 把最小值存下来不就好了?
JT21 栈的压入,弹出序列 一直等到你的出现
JT22 从上往下打印二叉树 用队列好好保护树上的每个她!
JT23 二叉搜索树的后序遍历序列 先苦后甜
JT24 二叉树中和为某一值的路径 答应我,不要放弃,把树跑完就行了
JT25 复杂链表的复制 按部就班太难,map最懂我
JT26 二叉搜索树与双向链表 琢磨了几天,挺抽象一题
JT27 字符串的排列 醉翁之意不在酒
JT28 数组种出现次数超过一半的数字 用哈希表支棱就完事了!
JT29 最小的K个数 靓仔靓女,快进来学习快排讷!
JT30 连续子数组的最大和 动态规划【全网最详图解】
JT31 从1到n整数中1出现的次数 万物有规律,特别是数字
JT32 把数组排成最小的数 sort()竟然可以编写排序规则!
JT33 丑数 客官进来抽个幸运数字呗!
JT34
JT35
JT36
JT37
JT38
JT39
JT40
JT41
JT42
JT43
JT44
JT45
JT46
JT47
JT48
JT49
JT50
JT51
JT52
JT53
JT54
JT55
JT56
JT57
JT58
JT59
JT60
JT61
JT62
JT63
JT64
JT65
JT66
JT67

默写刷遇错集

JT4—重建二叉树

node->left=reBuiled(pre,vin,pre_left+1,pre_left+index-vin_left,vin_left, index-1);
node->right=reBuiled(pre,vin,pre_left+index-vin_left+1,pre_right,index+1,vin_right);

node->right的pre_left+index-vin_left +1
看似无大碍,但是因为pre_left+index-vin_left应该是该跟结点的最后一个左节点,但是恰恰就是因为没有+1会导致内存不够了,还是严谨一些,+1就是天衣无缝了!

JT12—数值的整数次方

在使用快速幂的过程中,在指数移位的时候掉了=,导致程序无法结束,从而程序超时

exponent>>=1;//正确的移位操作
exponent>>1;//由于掉了=,导致exponent一直没有改变,进入了死循环

JT14—链表中倒数第k个结点

双指针忘记判断fast快指针的出界return,导致了段错误。

       while(k){
    
    
            if(!fast) return nullptr;//如果出现了k大于链表成都的情况,这个判断就可以输出空
            k--;
            fast=fast->next;
        }

JT16—合并两个排序的链表

1.返回值为head->next;如果返回的是head,那么会在最前面多出一个0,因为在申请空间的时候,表头的赋值是0.
2.while的条件,是直到其中一个链表跑完,这样,另外一个链表剩下的部分就都可以直接放到p->next后面了

while(pHead1&&pHead2)//正确的写法
while(!pHead1||!pHead2)//其中一个为零才开始循环 这是不对了,注意while,我们应该要的是,都不为零才开始循环

JT26—二叉搜索树与双向链表

JT35—数组中的逆序对

为什么调用了几次递归,子序列就是有序的讷?

题目分类表

数组

剑指offer题号 题解地址
JT1 二维数组中的查找
JT7 Fibonacci数列
JT13 调整数组循序使奇数位于偶数前面
JT19 顺时针打印矩阵
JT28 数组种出现次数超过一半的数字
JT32 把数组排成最小的数

字符串

剑指offer题号 题解地址
JT2 替换空格
JT27 字符串的排列

链表

剑指offer题号 题解地址
JT3 从尾到头打印链表
JT14 链表中倒数第k个结点
JT15 反转链表
JT16 合并两个排序的链表
JT25 复杂链表的复制
JT26 二叉搜索树与双向链表

剑指offer题号 题解地址
JT4 重建二叉树
JT17 树的子结构
JT18 二叉树的镜像
JT22 从上往下打印二叉树
JT23 二叉搜索树的后序遍历序列
JT24 二叉树中和为某一值的路径

数学

剑指offer题号 题解地址
JT11 二进制中1的个数
JT12 数值的整数次方
JT31 从1到n整数中1出现的次数
JT33 丑数

其他知识点

剑指offer题号 题解地址 知识点
JT5 用两个栈实现队列
JT6 旋转数组的最小数字 二分
JT8 跳台阶 递归
JT9 变态跳台阶 贪心
JT10 矩形覆盖 递归
JT20 包含min函数的栈
JT21 栈的压入,弹出序列
JT29 最小的K个数 快排
JT30 连续子数组的最大和 动态规划

月刷打卡与心得

猜你喜欢

转载自blog.csdn.net/qq_42136832/article/details/114441391