![](https://img-blog.csdnimg.cn/20200827135704163.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
剑指offer
文章平均质量分 94
剑指offer题解,自己的想法,如有不同,可讨论。
萌萌哒的瓤瓤
公众号:瓤瓤
坚持分享技术好文章
展开
-
剑指offer题型汇总及个人建议
目录考点分类难度分类全部题解链接建议感想考点分类我自己的理解,不喜勿喷。链表:二叉树:排序:搜索:数学逻辑:字符串:数组:难度分类本身牛客网的难度等级我感觉其实不是很合理,有时候他标的难题反而简单,中等题反而会卡我好久,下面是我列出来的难度分类。不喜勿喷。简单:中等:较难:困难:全部题解链接剑指offer(01-03)题解剑指offer(04-06)题解剑指offer(07-09)题解剑指offer(10-12)题解剑指offer(13-15)题解剑指offer(原创 2020-08-11 20:09:56 · 826 阅读 · 4 评论 -
剑指offer(61-67)题解
剑指offer(61-67)题解61题解62题解63题解64题解65题解66题解67题解61题解题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化原创 2020-08-11 19:57:35 · 250 阅读 · 0 评论 -
剑指offer(25-30)题解
剑指offer(25-30)题解25题解26题解27题解28题解29题解30题解25题解题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路解析这里是引用源代码在这里插入代码片26题解题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整原创 2020-08-11 19:41:45 · 215 阅读 · 0 评论 -
剑指offer(51-60)题解
剑指offer(51-60)题解51题解52题解53题解54题解55题解56题解57题解58题解59题解60题解51题解题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此原创 2020-08-11 14:23:51 · 403 阅读 · 0 评论 -
剑指offer(19-24)题解
剑指offer(19-24)题解19题解20题解21题解22题解23题解24题解19题解题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路解析这里是引用源代码在这里插入代码片20题解题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小原创 2020-08-10 19:41:11 · 251 阅读 · 0 评论 -
剑指offer(41-50)题解
剑指offer(41-50)题解41题解42题解43题解44题解45题解46题解47题解48题解49题解50题解41题解题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连原创 2020-08-10 09:20:34 · 330 阅读 · 0 评论 -
剑指offer(31-40)题解
剑指offer(31-40)题解31题解32题解33题解******(太特么重要了)34题解35题解36题解37题解38题解39题解40题解31题解题目描述求出1到13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1到13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路解析这里我是暴力的,主原创 2020-08-06 20:26:52 · 247 阅读 · 0 评论 -
剑指offer(16-18)题解
剑指offer(16-18)题解16题解17题解18题解16题解题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路解析这题逻辑其实本质上就是归并排序,就是元素的存取以及边界的判断条件有不同。这里先贴上别人对于归并排序的一张模拟图:其次就是懂得list.next=null与list=null的区别,list.next=null,说明当前list中还是有值的,所以我们会出现漏值的情况,list=null就说明当前list已经为空了值已经原创 2020-08-05 14:40:22 · 244 阅读 · 0 评论 -
剑指offer(13-15)题解
剑指offer(13-15)题解13题解14题解15题解13题解题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路解析这里我是将奇数和偶数分别压入两个list之中,之后只要按照顺序将元素取出并且重新赋值给数组即可,只要稍微注意一下偶数压入时候的数组下标即可。源代码import java.util.ArrayList;import java.util.Lis原创 2020-08-04 20:44:13 · 220 阅读 · 0 评论 -
剑指offer(10-12)题解
剑指offer(10-12)题解10题解11题解12题解10题解题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法思路解析这条其实本质上也是一条斐波那契数列数列的变形,注意题目中为什么强调的是2*N的矩阵,就是为了让大家通过斐波那契来实现。通过下面的图来讲解:源代码public class Solution {public int RectCover(int原创 2020-08-04 17:17:25 · 207 阅读 · 0 评论 -
剑指offer(04-06)题解
剑指offer(04-06)题解04题解05题解06题解04题解题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路解析这里我们首先需要知道前序遍历和中序遍历的规则前序遍历(根左右)中序遍历(左根右)我们是通过前序序列的第一个节点来划分中序序列,从而找到该节点的左右子树,之后只需要在对相应的序原创 2020-08-04 14:09:00 · 221 阅读 · 0 评论 -
剑指offer(07-09)题解
剑指offer07-09题解07题解08题解09题解07题解题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 n<=39思路解析其实今天解析的三道题目刚好都属于算法题目里的同一分支,就是递归,也可以说是动态规划,就是要找出状态转换方程,这样我们才能进行解答。斐波那契数列属于最简单的动态规划,条件基本就已经给出来了就是,后一项是前两项的和,所以状态转换方程也就出来了dp[i]=dp[i-1]+dp[i-2](i&原创 2020-07-08 13:59:18 · 185 阅读 · 0 评论 -
剑指offer(01-03)题解
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原创 2020-07-07 17:47:54 · 245 阅读 · 0 评论