![](https://img-blog.csdnimg.cn/2019091315291439.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
剑指offer刷题
小菜鸡的蜕变之路
长路漫漫,若能坚持,未来可期,加油~
展开
-
根据前中序列求二叉树的后序遍历序列
参考:由前序和中序重建二叉树、先序遍历、中序遍历,后序遍历的伪代码① 题目描述给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。② 输入描述:输入为一行。 两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔。保证数据合法。③ 输出描述:对应输出后序遍历序列④ 示例1输入:ABDEC DBEAC输出:D...原创 2019-10-04 11:42:51 · 613 阅读 · 1 评论 -
剑指offer 对称的二叉树
剑指offer题型分类及各题的代码及解题思路1、题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2、初始结构定义如下/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; T...原创 2019-08-26 11:16:09 · 119 阅读 · 0 评论 -
剑指offer 二叉树的镜像
剑指offer题型分类及各题的代码及解题思路1、题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 ...原创 2019-08-23 08:31:27 · 116 阅读 · 0 评论 -
剑指offer 从上往下打印二叉树
剑指offer题型分类及各题的代码及解题思路1、题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。2、初始结构定义如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), ri...原创 2019-08-23 09:27:04 · 136 阅读 · 0 评论 -
剑指offer 二叉搜索树的后序遍历序列
剑指offer题型分类及各题的代码及解题思路1、题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。2、初始结构定义如下:class Solution {public: bool VerifySquenceOfBST(vector<int> sequence) {}...原创 2019-08-23 11:25:56 · 185 阅读 · 0 评论 -
剑指offer 二叉树中和为某一值的路径
剑指offer题型分类及各题的代码及解题思路1、题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)2、初始结构定义如下:/*struct TreeNode { int val; struct TreeNode *l...原创 2019-08-23 17:08:47 · 114 阅读 · 0 评论 -
剑指offer 树的子结构
剑指offer题型分类及各题的代码及解题思路1、题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2、初始结构定义如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x...原创 2019-08-22 20:38:59 · 142 阅读 · 0 评论 -
剑指offer 二叉树的下一个结点
剑指offer题型分类及各题的代码及解题思路题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。初始结构定义如下:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNo...转载 2019-08-18 08:28:22 · 227 阅读 · 0 评论 -
剑指offer 重建二叉树
剑指offer题型分类及各题的代码及解题思路题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。初始结构定义如下:/*** Definition for binary tree* st...转载 2019-08-18 08:19:32 · 144 阅读 · 0 评论 -
剑指offer 滑动窗口的最大值
剑指offer题型分类及各题的代码及解题思路题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6...转载 2019-08-18 08:09:55 · 114 阅读 · 0 评论 -
剑指offer 平衡二叉树
剑指offer题型分类及各题的代码及解题思路1、题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。2、初始结构定义如下:class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) {}};3、思路每个结点最好只遍历一遍,减小复杂度。我们可以用后序遍历的方式来遍历二叉树的每个结点,在...原创 2019-08-25 17:33:39 · 104 阅读 · 0 评论 -
剑指offer 按之字形顺序打印二叉树
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。2、初始结构定义如下/*struct TreeNode { int val; struct TreeNode *lef...原创 2019-08-26 16:30:11 · 141 阅读 · 0 评论 -
剑指offer 把二叉树打印成多行
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。2、初始结构定义如下/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; T...原创 2019-08-26 17:02:54 · 124 阅读 · 0 评论 -
剑指offer 旋转数组的最小数字
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如:数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。2、初...原创 2019-09-05 10:46:50 · 131 阅读 · 0 评论 -
剑指offer 矩形覆盖
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?2、初始结构如下class Solution {public: int rectCover(int number) { }};...原创 2019-09-04 21:57:33 · 126 阅读 · 0 评论 -
剑指offer 变态跳台阶
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2、初始结构如下class Solution {public: int jumpFloorII(int number) { }};3、...原创 2019-09-04 21:17:31 · 130 阅读 · 0 评论 -
剑指offer 跳台阶
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)2、初始结构如下:class Solution {public: int jumpFloor(int number) { ...原创 2019-09-04 20:58:39 · 119 阅读 · 0 评论 -
剑指offer 斐波那契数列
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39思路使用迭代法,用 left 和 right 保存计算过程中的结果,并复用起来。迭代过程如下:root left rightf(...原创 2019-08-28 16:59:56 · 154 阅读 · 1 评论 -
剑指offer 机器人的运动范围
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+...原创 2019-08-28 15:58:44 · 180 阅读 · 0 评论 -
剑指offer 矩阵中的路径
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如 a b c e s f c s a d e e 矩...原创 2019-08-28 14:43:33 · 149 阅读 · 0 评论 -
剑指offer 第一个只出现一次的字符
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).2、初始结构如下class Solution {public: int FirstNotRepeat...原创 2019-08-27 17:19:13 · 164 阅读 · 0 评论 -
剑指offer 最小的k个数
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。2、初始结构定义如下class Solution {public: vector<int> GetLeastNumbers...原创 2019-08-27 16:46:33 · 162 阅读 · 0 评论 -
剑指offer 二叉树的第k个结点
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。2、初始结构定义如下/*struct TreeNode { int val; struct TreeNode *left; ...原创 2019-08-27 16:09:46 · 194 阅读 · 0 评论 -
剑指offer 序列化二叉树
剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)1、题目描述请实现两个函数,分别用来序列化和反序列化二叉树。二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示...原创 2019-08-26 18:35:07 · 122 阅读 · 0 评论 -
剑指offer 二叉树的深度
剑指offer题型分类及各题的代码及解题思路1、题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(设只有根节点时,深度为1)2、初始结构定义/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...原创 2019-08-25 16:44:12 · 164 阅读 · 0 评论 -
剑指offer 二叉搜索树与双向链表
剑指offer题型分类及各题的代码及解题思路1、题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。2、初始结构定义如下/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x...原创 2019-08-25 15:05:05 · 115 阅读 · 0 评论 -
剑指offer 左旋转字符串
剑指offer题型分类及各题的代码及解题思路题目描述①汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!②字符串的左旋操作是把字符串前面的若干个字...转载 2019-08-10 20:46:19 · 128 阅读 · 0 评论 -
剑指offer 链表中倒数第k个结点
剑指offer题型分类及各题的代码及解题思路题目描述输入一个链表,输出该链表中倒数第k个结点。分析:(来自剑指offer 第二版P137)方法:双指针法设置两个指针,first,last,先让first走k-1步,然后再一起走,直到first指向最后一个结点时,last即为倒数第k个节点。注意:输入的pListHead可能为NULL。由于代码试图访问空指针指向的内...原创 2019-08-07 22:11:38 · 144 阅读 · 0 评论 -
剑指offer 和为s的两个数
剑指offer题型分类及各题的代码及解题思路题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。分析:数列满足递增,设两个头尾两个指针i和j,若ai + aj == sum,就是答案(相差越远乘积越小)若ai + aj > ...转载 2019-08-05 17:01:32 · 118 阅读 · 0 评论 -
数组中数值和下标相等的元素
剑指offer题型分类及各题的代码及解题思路题目三:数组中数值和下标相等的元素假设一个单调递增的数组中的每个元素都是整数并且是唯一的。请编写一个函数,找出数组中任意一个数值等于其下标的元素。例如:在数组{-3,-1,1,3,5}中,数字3和它的下标相等。分析:这一题也可以使用二分查找C++实现代码如下int GetNumSameAsIndex(const int* n...原创 2019-08-05 16:29:22 · 478 阅读 · 0 评论 -
0~n-1中缺失的数字
剑指offer题型分类及各题的代码及解题思路题目二:0~n-1中缺失的数字。(来自剑指offer第二版 P266)一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。分析:因为数组是排序的,因此数组中开始的一些数字与它们的下标相同。也就是说,0在下标为0的位置,1在...原创 2019-08-05 16:27:59 · 751 阅读 · 0 评论 -
剑指offer 数字在排序数组中出现的次数
为了方便自己和大家共同学习,本人整理了一些基本解法和比较巧妙的解法~代码整理自牛客网讨论区:https://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2?f=discussion剑指offer题型分类及各题的代码及解题思路题目描述统计一个数字在排序数组中出现的次数。分析:数组有序,可以用...原创 2019-08-05 11:14:12 · 202 阅读 · 0 评论 -
剑指offer 数组中的逆序对
剑指offer题型分类及各题的代码及解题思路题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75...原创 2019-07-30 20:47:22 · 171 阅读 · 0 评论 -
剑指offer 赋值运算符函数
剑指offer题型分类及各题的代码及解题思路题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void);privat...原创 2019-07-21 21:36:29 · 170 阅读 · 0 评论 -
剑指offer 数组中出现次数超过一半的数字
剑指offer题型分类及各题的代码及解题思路题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路一:数组排序后,如果符合条件的数存在,则一定是数组中间那个数。(比如一个大小为5的数组:{1,2,2,2,3}...原创 2019-07-21 20:47:27 · 186 阅读 · 0 评论 -
剑指offer 替换空格
剑指offer题型分类及各题的代码及解题思路题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。C++实现代码如下:void replaceSpace(char *str,int length) { int space_num;//空格...原创 2019-07-20 17:08:42 · 142 阅读 · 0 评论 -
剑指offer 数组中重复的数字
剑指offer题型分类及各题的代码及解题思路题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路1:哈希法由于所有元素值是有范围的,因此可以用一个长...原创 2019-07-20 21:05:34 · 424 阅读 · 0 评论 -
剑指offer 二维数组中的查找
剑指offer题型分类及各题的代码及解题思路题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。C++实现代码如下:bool Find(int target, vector<vector<int> > a...原创 2019-07-20 17:06:33 · 209 阅读 · 0 评论 -
剑指offer 和为S的连续正数序列
剑指offer题型分类及各题的代码及解题思路题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luc...原创 2019-08-06 11:43:07 · 222 阅读 · 0 评论 -
剑指offer 反转链表
剑指offer题型分类及各题的代码及解题思路题目描述输入一个链表,反转链表后,输出新链表的表头。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};分析:注意关于链表问题的常见注意点的思考:...原创 2019-08-08 15:47:00 · 145 阅读 · 0 评论