
剑指offer
Preke
这个作者很懒,什么都没留下…
展开
-
【剑指offer】面试题7:用两个栈实现队列
题目给出的结构体:template<typename T> class CQueue { public: CQueue(); ~CQueue(); void appendTail(const T & node); T deleteHead(); private: stack<T> stack1;原创 2016-08-28 22:49:25 · 514 阅读 · 0 评论 -
【剑指offer】面试题6:重建二叉树
题目就是输入前序和中序来实现二叉树的重建,虽然感觉自己人为操作思路很清晰,但是写到程序里会觉得很繁琐,以前实现过,但是如果是面试的话,还是要熟练才好,真正理解每一句代码的思路。所以也算是克服恐惧来仔细分析一次吧。(我没有用书上的代码来分析,而是用之前自己参照网上的版本写的)typedef struct BinaryTreeNode{ int value; BinaryTreeNode原创 2016-08-28 20:20:58 · 549 阅读 · 0 评论 -
【剑指offer】面试题8:旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的旋转,输出旋转数组的最小元素,例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小元素为1。其实这里想了一个题外话,如果一个递增的数组,一直按照一个方向无论旋转多少次,都还是两个递增数组的拼接,如题目中的旋转就是{3,4,5}和{1,2}的拼接。证明的话,可以用归纳法。就这道题来原创 2016-08-29 09:29:21 · 698 阅读 · 0 评论 -
【剑指offer】面试题9:斐波那契数列
题目写一个函数,输入n, 求斐波那契数列的第n项。递归问题规模为: T(n)=T(n−1)+T(n−2)T(n) = T(n-1) + T(n-2) 如果我们估计一下,让 T(n−1)=T(n−2)T(n-1) = T(n-2) 那么T(n)=2T(n−1)T(n) = 2T(n-1) 那么O(n)=2nO(n) = 2^n简介而不高效long long Fibonacci(int n)原创 2016-08-29 15:22:30 · 545 阅读 · 0 评论 -
【剑指offer】面试题10: 二进制中1的个数
题目实现一个函数,输入一个整数,输出该数二进制表示中1的个数。 例如9的二进制表示为1001,输入9,输出的结果是2.其实自己来说并不太喜欢这种二进制游戏,但是也是自己的弱项,还是跟着书上分析一下。首先,数字在计算机内部存储本身就是二进制,我们在做运算的时候,不用傻傻的写一个函数将十进制转换成二进制了。右移,可能导致死循环(右移补符号位)int NumOf1(int n) { int cn原创 2016-08-29 16:14:27 · 613 阅读 · 0 评论 -
【剑指offer】面试题25:二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right;};想法:先理解路径,就是树根到叶子节点的条路,那我们先实现出原创 2016-09-10 10:13:58 · 400 阅读 · 0 评论 -
【剑指offer】面试题1:赋值运算符函数
题目要求为下面一个类实现一个赋值运算符的函数:class CMyString { public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(); private: char* m_pData;}; 我们要实现任意原创 2016-08-24 19:58:19 · 585 阅读 · 0 评论