笔试题
baobao小野菊
这个作者很懒,什么都没留下…
展开
-
请实现一个函数,把字符串中的每个空格替换成“ ”
题目:替换空格---请实现一个函数,把字符串中的每个空格替换成“%20”例子:We are happy.\0替换后:We%20are%20happy.\0思路:从字符串的后面往前替换,这样字符移动的次数少,时间复杂度为:O(n);如下图1:1、首先得遍历字符串,计算字符串的真实长度,以及空格的个数;2、计算替换空格后的长度,2*空格个数+字符串真实长度3、当字符不等于' '原创 2016-05-09 23:03:50 · 1147 阅读 · 0 评论 -
单例模式
题目:实现一个类,只能生成该类的一个实例原创 2016-05-09 11:55:27 · 374 阅读 · 0 评论 -
直接插入排序
直接插入排序与希尔排序希尔排序是直接插入排序的优化直接插入排序思路:将一个数插入一个有序集合;最好时间效率O(N),最坏时间效率O(N2);希尔排序思路:先进行预排序(与插入排序思路相同,就是gap开始大于1),预排序完将小值放在了前面,大值放在了后面;当gap=1时,进行插入排序;此时的插入排序就接近O(N);代码如下:#includeusing n原创 2016-06-07 16:39:21 · 336 阅读 · 0 评论 -
数值的整数次方
题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。原创 2016-05-23 21:44:33 · 250 阅读 · 0 评论 -
二叉树的面试题
二叉树的面试题1.递归创建二叉树;2.由前序遍历和中序遍历重建二叉树(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5);3.前、中、后三种遍历的递归;4.层次遍历-队列应用;5.前、中、后三种遍历的非递归-用桟实现非递归;6.求结点的个数;7.求二叉树的高度;8.求叶子结点的个数;9.查找一个数据;10.求第k层结点的个数;原创 2016-07-25 21:17:52 · 462 阅读 · 0 评论 -
快速排序
快速排序快速排序接近二分查找;时间效率为O(NlogN)-O(N2);原创 2016-06-17 20:07:54 · 566 阅读 · 0 评论 -
并查集
题目:n个人有m对好友关系,如果俩个人是直接或者间接的好友(好友的好友的好友...),则认为他们是同一个朋友圈。请问这n个人里一共有多少个朋友圈并查集的定义:1.将N个不同的元素分成一组不相交的集合。2.开始时,每个元素就是一个集合,然后按规律将两个集合进行合并;3.并查集的底层数据结构是数组。例如:n=5,m=3,r = {{1,2},{2,3},{4,5}}原创 2016-07-15 22:14:00 · 316 阅读 · 0 评论 -
堆排序
题目:堆排序原创 2016-05-31 23:31:33 · 328 阅读 · 0 评论 -
实现CMyString类--深拷贝与浅拷贝
实现CMyString类,实现赋值运算符函数(深拷贝与浅拷贝)深拷贝:赋值运算符函数说明步骤1、释放原来的内存空间步骤2、再重新开辟要赋值的对象的大小的空间步骤3、再将另一个对象的值拷贝给this对象友元函数的说明:由于输出重载需要俩个参数,不能再隐含this指针,故使用友元函数代码如下:class CMyString{public:原创 2016-05-08 21:45:01 · 928 阅读 · 0 评论 -
两个桟实现一个队列
题目:俩个桟实现一个队列,请实现它的俩个函数appendTail/deleteHead算法思路:入队:将元素压入桟s1中;//appendTail出队:先判断s2中是否为空,如果不为空,直接弹出栈顶元素;否则,将s1中的元素逐个弹出并压入桟s2中,把最后一个元素弹出并出队;//deleteHead判断队列是否为空(empty()):判断s1/s2中都没有元素时,返回true原创 2016-05-06 21:05:10 · 655 阅读 · 0 评论 -
优先级队列
堆的实现--->优先级队列注:由于大堆与小堆的实现大同小异,只需要修改大于或小于号;所以为了代码复用,本人使用了模板参数及模板的模板参数模板的模板参数:为了引入仿函数即函数对象;此处不多介绍仿函数,它只是一个函数对象;一个类型;如下:类型GreaterCompare与类型LessCompare:他们的内部都只是重载了();templatestruct Great原创 2016-05-31 17:30:36 · 286 阅读 · 0 评论 -
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请按成 一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请按成 一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数分析如下图(也是测试用例):上面例子:row = 4;col = 5;IsExitNum()函数:值num在arr[4][5]中是否存在;代码如下:#includ原创 2016-05-10 23:12:50 · 1715 阅读 · 0 评论 -
打印1到最大的n位数
题目:输入数字n,按顺序打印出1到最大的n位十进制。比如输入3,则打印出1、2、3一直到最大的三位数即999原创 2016-05-24 19:54:35 · 333 阅读 · 0 评论 -
输入二叉树的前序遍历和中序遍历,重建出该二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设前序遍历与中序遍历的结果都不含重复的数字。eg:前序遍历:{1,2,4,7,3,5,6,8}; 中序遍历:{4,7,2,1,5,3,8,6};二叉树结点定义如下:struct BinaryTreeNode{int _value;BinaryTreeNode* _left;Bin原创 2016-05-11 18:46:32 · 640 阅读 · 0 评论 -
旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.原创 2016-05-24 23:18:49 · 250 阅读 · 0 评论 -
二进制中1的个数
#includeint count_one_bits(unsigned int value){int count=0;while(value){count++;value=value & (value-1);}return count;}int main(){int ret;ret=count_one_bits(15);printf("原创 2015-03-13 16:08:47 · 385 阅读 · 0 评论 -
菲波那切数列
题目:写一个函数,输入n,求菲波那切数列(Fibonacci)的第n项菲波那切数列的定义如下:说明:除了第0项为0,第一项为1,第n项都为前俩项之和eg:01 2 3 4 56 7 8 9 1011 ...... 0 1 1 2 35 8 13 21 3455 89 ......代码如下:/原创 2016-05-13 14:54:44 · 853 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分分析如下图:代码如下:#includevoid Swap(int* x, int* y){ int tmp = *x; *x = *y; *y = tmp;}void oddtoeven(int* arr, int l原创 2016-05-13 21:33:26 · 261 阅读 · 0 评论 -
链表的逆置
题目:输入一个链表的头节点,从头到尾反过来打印出每个节点的值Reverse()函数:输入头结点,可输出的确是从尾到头;即第一个输入的节点,最后一个输出;最后一个输入的结点,第一个输出;很典型的“后进先出“;用桟实现;1、将结点放进桟中,当结点全遍历一遍时,链表已经反过来,2、此时再从桟顶逐个输出结点的值Reverse2()函数:递归本质就是桟结构;则用_Reverse2(_原创 2016-05-09 21:21:08 · 1641 阅读 · 0 评论 -
在O(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点的指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义如下:代码如下:#include#include#includestruct ListNode{ int m_pValue; struct ListNode* m_pNext;}*head;//增加一个结点void addListTailNode(st原创 2016-05-16 19:45:37 · 224 阅读 · 0 评论 -
100w个数中找出最大的k个数
题目:100w个数中找出最大的k个数原创 2016-06-05 17:46:47 · 790 阅读 · 3 评论