剑指offer
文章平均质量分 77
minghui_
路漫漫其修远兮,吾将上下而求索
展开
-
剑指offer面试题(2)——实现Singleton模式
转自:我想有个长长的名字的博客,剑指offer 面试题2 Singleton模式 C++实现题目:实现Singleton模式 以下内容是我在看《剑指offer》的面试题2时,遇到的问题,因为书中使用C#实现,所以想用C++重新实现一下,Test方法不够全,后续还要完善。C++实现过程主要参考:C++设计模式——单例模式。 代码中的注释一般是我的笔记,或一些发现。 PS: 感谢勤劳的慵懒君~~...转载 2018-05-26 09:35:05 · 1848 阅读 · 0 评论 -
剑指offer面试题(10)——斐波那契数列
题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下: 解题思路 在学C语言的时候课本上就有斐波那契数列,实现的方法是用最直观的递归,主要代码如下:long long Fabonacci(const int& num){ if (num == 1) return 1; if (num == 0) return ...原创 2018-06-25 21:33:27 · 334 阅读 · 0 评论 -
剑指offer面试题(9)——用两个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 类的定义如下:template <typename T> class CQueue{public: CQueue(void); ~CQueue(void); ...原创 2018-06-23 19:52:18 · 178 阅读 · 0 评论 -
剑指offer面试题(3)——数组中重复的数字
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。解法1:排序 将输入的数组排序,然后扫描排序后的数组即可。 排序算法时间复杂度:O(n...原创 2018-06-01 21:39:28 · 248 阅读 · 0 评论 -
剑指offer面试题(7)——重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建如下图所示的二叉树并输出它的头结点。 二叉树节点定义如下:struct BinaryTreeNode { int ...原创 2018-06-14 10:50:37 · 167 阅读 · 0 评论 -
剑指offer面试题(6)——从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印每个节点的值。链表节点定义如下:typedef struct Node{ int data; //数据域 struct Node * pNext; //指针域}*PNODE, NODE;解题思路 最直观的的做法是改变链表中链接节点的指针的指向,改变链表的方向,然后就可以遍历链表直接输出了。 ...原创 2018-06-06 17:19:45 · 237 阅读 · 0 评论 -
剑指offer面试题(8)——二叉树的下一个节点
题目:给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。 如下图所示的一颗二叉树,中序遍历序列是{d,b,h,e,i,a,f,c,g};下面将以这棵树为例。其中实线表示父节点指向子节点的指针,虚线表示子节点指向父节点的指针。 二叉树节点定义如下:struct B...原创 2018-06-20 22:02:00 · 189 阅读 · 0 评论 -
剑指offer面试题(5)——替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。解题思路 最直观的的做法是从头到尾扫描字符串,每次碰到空格字符的时候进行替换。由于把1个字符换成3个字符,所以必须把空格后面的字符都后移两个单位。例如字符串“We are happy.”,移动过程可由如下示意图表示: ...原创 2018-06-05 19:36:34 · 209 阅读 · 0 评论 -
剑指offer面试题(1)——赋值运算符函数
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void); void Print(); private: ...原创 2018-05-24 10:36:29 · 306 阅读 · 0 评论 -
剑指offer面试题(4)——二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右中,每一行都按照从左到右递增的顺序排序。每一列都按照从上到下的顺序排序递增的顺序排序。请完成一个函数,请输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行,每列递增的排序。如果在这个数组中查找数字7,则返回 true;如果查找数组 5, 由于数组不含数字,则返回 false。解题思路 ...原创 2018-06-04 21:23:14 · 257 阅读 · 0 评论 -
剑指offer面试题(11)——旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转,该数组的最小值为 1 。解题思路 最直观的做法是把旋转数组从前到后遍历一遍,其时间复杂度为 O(n)。很明显,这种解法效率较低。 主要代码如下...原创 2018-07-04 09:41:06 · 286 阅读 · 0 评论