![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
qq_24003917
这个作者很懒,什么都没留下…
展开
-
面试题1-赋值运算符函数
一、题目题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void); void Print();priv...原创 2019-03-05 10:47:11 · 174 阅读 · 0 评论 -
面试题3-数组中的重复数字
一、题目 在长度为n的数组中,所有的元素都是0到n-1的范围内。 数组中的某些数字是重复的,但不知道有几个重复的数字,也不知道重复了几次,请找出任意重复的数字。 例如,输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出为2或3。二、题目分析 1、可以利用哈希表来解决该问题。首先创建一个辅助数组,在辅助数组中存储所有元素的出现次数。然后遍历辅助数...原创 2019-03-05 11:09:28 · 248 阅读 · 0 评论 -
面试题4-二维数组中的查找
一、题目 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二、题目分析 首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的...原创 2019-03-06 11:07:26 · 206 阅读 · 0 评论 -
面试题5-替换空格
一、题目 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。 二、题目分析 最直观的做法是从头到尾扫描字符串,每一次碰到空格字符的时候做替换。由于是把1个字符替换成3个字符,我们必须要把空格后面所有的字符都后移两个字节,否则就有两个字符被覆盖了。这样的话,时间复杂度...原创 2019-03-06 11:18:54 · 182 阅读 · 0 评论 -
面试题6-从尾到头打印链表
一、题目 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。二、题目分析 遍历链表的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“后进先出”,我们可以用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值...原创 2019-03-09 10:34:22 · 151 阅读 · 0 评论 -
面试题7-重建二叉树
一、题目 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二、题目分析 二叉树的前序遍历顺序是:先访问根节点,然后前序遍历左子树,再前序遍历右子树。 中序...原创 2019-03-09 10:51:43 · 149 阅读 · 0 评论 -
《剑指offer》面试题8-二叉树的下一个结点
一、题目 题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。二、题目分析分析二叉树的下一个节点有以下几种情况:1、情况一:若该结点有右子树,则下一个节点为它的右子树中的最左子节点;2、情况二:若该节点无右子树,且该节点为其父节点的左子节点,则其下一个节点为其父节点;3、情...原创 2019-03-11 11:46:38 · 153 阅读 · 0 评论 -
《剑指offer》面试题9-用两个栈实现队列
一、题目题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。二、题目分析1、队列的性质是先进先出,而栈的性质是先进后出,先进的在栈底部,后进的在栈顶;2、第一个栈临时保存插入的数据,当调用弹出函数的时候,如果stack2不为空则直接弹出;为空则把stack1中的数据全部弹出放到...原创 2019-03-11 12:01:15 · 278 阅读 · 0 评论 -
《剑指offer》面试题10-斐波那契数列
一、题目 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。二、题目分析 最简单的方法就是采用递归的方法,但是递归可能引起严重的问题,就是调用栈溢出。还有一种简单的方法就是从下往上计算,首先根据f(0)和f(1)计算f(2),再根据f(1)和f(3)计算f(3),把中间计算的结果保存起来,依次类推就可以算出第n项。三、代码实现方法一...原创 2019-03-12 11:38:15 · 213 阅读 · 0 评论