《剑指offer》《面试笔记》
NAME
生活会回报你所有的努力
展开
-
程序员面试宝典字符串中连续出现次数最多的子串
题目:求解字符串中连续出现原创 2014-08-19 16:06:12 · 927 阅读 · 0 评论 -
第三十八题 C++面试题
题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能不能同时用static和const修饰类的成员函数?分析:答案是不可以。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员原创 2014-06-06 23:19:22 · 629 阅读 · 0 评论 -
第四十二题 树的子结构
题目:二叉树的结点定义如下:struct Tree{ int m_value; TreeNode* m_left; TreeNode* m_right;};输入两棵二叉树A和B,判断树B是不是A的子结构。例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一样的,因此B就是A的子结构。原创 2014-06-24 18:40:06 · 595 阅读 · 0 评论 -
第四十题 不用+、-、×、÷做加法
题目:如5的二进制是101,17的二进制10001。还是试着把计算分成三步:第一步各位相加但不计进位,得到的结果是10100(最后一位两个数都是1,相加的结果是二进制的10。这一步不计进位,因此结果仍然是0);第二步记下进位。在这个例子中只在最后一位相加时产生一个进位,结果是二进制的10;第三步把前两步的结果相加,得到的结果是10110,正好是22。由此可见三步走的策略对二进制也是管用的原创 2014-06-23 14:07:57 · 703 阅读 · 0 评论 -
第三十七题 求取二叉树中节点的最低公共节点
题目:二叉树的结点定义如下:struct TreeNode{ int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点思路:求取2个节点的公共节点,rugu原创 2014-06-05 22:44:15 · 577 阅读 · 0 评论 -
第四十八题 二叉搜索数与双向链表
题目:将二叉搜索数的节点转换为双向链表的形式原创 2014-07-15 22:36:17 · 686 阅读 · 0 评论 -
第四十一题 字符串中替换空格
题目:将字符串中的空格替换为%20,如We are原创 2014-06-24 13:46:33 · 543 阅读 · 0 评论 -
第十三题 从上往下遍历二叉树
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入 8 / \ 6 10 /\ /\ 5 7 9 11输出8 6 10 5 7 9 11。原创 2014-04-13 17:25:09 · 727 阅读 · 0 评论 -
第三十题 从1开始顺序输出n位的整数
题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999//输出n位的数,用这种方法可以防止出现越界#include #include using namespace std;void printDecimal(int n){ if(n <= 0) return; string str = "1"; while(str.s原创 2014-05-13 11:26:07 · 862 阅读 · 0 评论 -
第二十九题 在字符串中删除指定字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”abcd”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。原创 2014-05-12 11:24:21 · 850 阅读 · 0 评论 -
第十一题 判断数组中的节点是不是二叉查找树的后序遍历
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / / / 5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树原创 2014-04-11 18:42:33 · 686 阅读 · 0 评论 -
第四十三题 通过前序遍历和中序遍历构建二叉树
题目:通过树的前序遍历和中序遍历来确定树的结构并输出原创 2014-06-25 20:21:27 · 682 阅读 · 0 评论 -
第三十三题 输出容器中3个不同的数
题目:用C++设计一个不能被继承的类首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。原创 2014-05-24 16:33:59 · 725 阅读 · 0 评论 -
2013百度笔试 求字符串中连续出现相同字符的最大值
题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2。原创 2014-08-28 19:37:51 · 906 阅读 · 0 评论 -
整数相乘方法
题目:整数的相乘,由于整数相乘的结果knen原创 2014-08-22 15:19:13 · 1082 阅读 · 0 评论 -
第四十七题 从1到n整数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。思路方法:见编程之美13原创 2014-07-09 20:02:37 · 797 阅读 · 0 评论 -
第三十九题 关于C++中类的对象的大小
#include #include #include using namespace std;class A{};class B{public: B() {} ~B() {}};class C{public: C() {} virtual ~C() {}};int main(){ printf("%d, %d, %d\n", sizeof(A), s原创 2014-06-17 22:16:29 · 723 阅读 · 0 评论 -
第三十五题 用C++设计一个不能被继承的类
首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。可是这个类的构造函数和析构函数都是私有函数了,我们怎样才能得到该类的实例呢?这难不倒我们,我们可以通过定义静态来创建和释原创 2014-05-29 19:02:23 · 651 阅读 · 0 评论 -
第三十五题 赋值操作符函数
题目:类CMyString的声明如下:class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); CMyString& operator = (const CMyString& s原创 2014-05-29 18:47:03 · 642 阅读 · 0 评论 -
第三十四题 求取一个数的n次方
题目:就是求取一个数的n次方,不考虑yichu原创 2014-05-29 15:57:43 · 1071 阅读 · 0 评论 -
第三十六题 标准库字符操作函数的实现
#include #include using namespace std;char *strcpy(char *dst,char *src){ assert(dst!=nullptr&&src!=nullptr); if (dst==src) { return dst; } char *returnstr=dst; while ((*dst++=*src++)!='\0'原创 2014-05-29 22:04:50 · 742 阅读 · 0 评论 -
第四十五题 包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。原创 2014-06-27 20:03:53 · 687 阅读 · 0 评论 -
第四十六题 复制链表
题目:二叉树节点定义struct ComplexListNode{int m_nValue;ComplexListNode* m_pNext;ComplexListNode* m_pSibling;};原创 2014-06-27 20:15:00 · 821 阅读 · 0 评论 -
第四十四题 顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213原创 2014-06-27 19:59:17 · 649 阅读 · 0 评论 -
第十题 字符串包含问题
题目:假设这有一个各种字母组成的字符串A,和另外一个字符串B,字符串里B的字母数相对少一些。什么方法能最快的查出所有小字符串B里的字母在大字符串A里都有?比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPO答案是true,所有在string2里的字母string1也都有。原创 2014-04-11 14:10:18 · 628 阅读 · 0 评论 -
第九题 从尾到头输出链表
剑指offer笔记,题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。原创 2014-04-11 13:59:40 · 975 阅读 · 0 评论 -
第二题 求数组中和最大的子数组和其对应的位置
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。思路来自原创 2014-04-07 21:08:30 · 752 阅读 · 0 评论 -
第二十六题 调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面原创 2014-05-07 14:34:42 · 578 阅读 · 0 评论 -
第二十五题 求取字符串的排练组合输出
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。原创 2014-05-07 13:46:55 · 628 阅读 · 0 评论 -
第二十四题 求取树的深度
//求取树的深度#include using namespace std;struct treenode{ treenode *m_left; treenode *m_right; int value;};//定义一个平衡二叉树void maketree(int value,treenode *&ptr){ if (ptr==nullptr) { treenode原创 2014-05-06 22:14:42 · 645 阅读 · 0 评论 -
第二十三题 求取和为n的连续的数
//求取和为定值的连续的数#include using namespace std;//输出beg和end之间的数void printcount(int beg,int end){ for (int i=beg;i<=end;++i) { cout<<i<<" "; } cout<<endl; return;}void FindContinuousSequence(in原创 2014-05-04 22:12:26 · 799 阅读 · 0 评论 -
第十七题 反转链表
题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。原创 2014-04-16 12:48:55 · 760 阅读 · 0 评论 -
第十九题 用2个栈实现队列和用2个队列实现栈
1.用2个栈实现队列:第一个栈输入进shu原创 2014-04-16 14:50:40 · 716 阅读 · 0 评论 -
第十六题 2014华为机试题 字符串压缩程序
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。原创 2014-04-15 14:21:57 · 1120 阅读 · 0 评论 -
第二十二题 从1到n的正数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。原创 2014-04-29 15:57:45 · 552 阅读 · 0 评论 -
第十五题 求取1+2+3+......+n
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。原创 2014-04-14 19:43:11 · 663 阅读 · 0 评论 -
第十四题 输出链表的倒数第k个节点的值
题目:输入一个单向链表,输出该链表中倒数第k个结点。原创 2014-04-14 19:40:20 · 563 阅读 · 0 评论 -
第四题 构建 二元查找树 然后将节点变为排序的链表按序输出
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14/ / / /4 8 12 16 转换成双向链表4=6=8=10=12=14=16。//二元查找树变为排序的链表#include using namespace std;struct BTSTree{原创 2014-04-08 15:59:33 · 598 阅读 · 0 评论 -
第三题 数组中最小的K个数
题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。本文思路来自这里http://blog.csdn.net/v_JULY_v/article/details/6403777,对其方法进行了修改思路:按编程之美第141页上解法二的所述,类似快速排序的划分方法,N个数存储在数组S中,再从数组中随机选取一个数X(随机选取枢原创 2014-04-07 21:11:10 · 827 阅读 · 0 评论 -
第三十一题 输出字符串字符的几种组合
题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。原创 2014-05-15 19:02:38 · 636 阅读 · 0 评论