求职试题
文章平均质量分 62
rainyi2007
这个作者很懒,什么都没留下…
展开
-
链表奇偶位置调换
题目:将链表的奇数位和偶数位调换组成新的链表分析:先遍历链表,将链表依据奇数位和偶数位分解成两个链表,然后依次在偶数位链表中的每个结点后面插入奇数位链表中的相应位置的每个结点。定义两个函数,一个是删除链表头结点,另一个是在指定结点后面插入一个节点。重组链表的过程即是删除奇数位链表头结点,然后再将其插入在偶数位链表中指定的位置上。时间复杂度为O(N)/* * 将链表的奇数位和偶数位原创 2012-10-23 20:56:22 · 3091 阅读 · 1 评论 -
递归算法查找字符串中相同字符连续出现的最大次数
题目:使用递归算法查找字符串中相同字符连续出现的最大次数举例:输入“aaabbc”,输出3分析:问题实质上是“查找字符串中相同字符连续出现的最大次数”,关键是限制了只允许使用递归的方法。思路:1、非递归的情况:连续字符的问题可以通过设置前后指针,不断移动比较两个指针的值即可解决。int CountMaxNumOfChar(const char *str) { if (str ==原创 2012-10-20 14:18:42 · 2686 阅读 · 0 评论 -
计算多边形的面积
题目:输入一个点列,顺次连接成一个封闭多边形,计算多边形的面积分析:方法一,计算面积可以考虑定积分的形式,定积分有正有负,顺次求和,重复部分相互抵消,最后剩下的总面积的绝对值就是多边形的面积。从线性积分后的结果可以容易的看出,直线段的积分实际上就是求该直线段与x轴所围成的区域的梯形的面积Int(P1, P2) = Int(k*x + b, P1.x, P2.x) = 0.5 * (原创 2012-10-22 15:59:04 · 955 阅读 · 0 评论 -
华为机试试题再写
华为机试时,自己由于对一些库函数不熟,写的代码像一坨shit,还未调试通过。回来后恶补一次,再写一遍以下三道试题。试题的难度不大,关键是在一小时内能写出清晰的代码,没有bug,对我有点难度。/*题目一: 字符串的过滤功能1、输入'a'~'z'之间的字符串,去掉重复的字符,如:aaazzz --> az2、pOutputStr在外部已经申请好空间*/void St原创 2012-09-03 11:39:43 · 746 阅读 · 0 评论 -
只同0交换的排序
题目:一个N元数组,乱序存放0~N-1的数字,只允许同数字0所在位置交换,排序整个数组思路:首先找出0所在的位置,将0交换到第0位。从第1位开始依次判断后续的数字x是否放在正确位置,若位置正确,进行后续检查;若位置不正确,将该数字x,该数字x要放位置的数字y及0,三数字进行交换,此后,x换到了正确位置,继续检查y是否正确,直到正确为止。分析:时间复杂度O(N),空间复杂度O(1)原创 2012-10-16 09:28:02 · 1139 阅读 · 4 评论 -
模式串查找
题目:给定两个字符串,一个模式串,一个目标串,找出目标串中符合模式串格式的字串举例:str = "aaababaa", format = "XXYXY", 输出:"aabab"思路:将模式串按字符分类,存储每个字符出现的位置,例如:position['X'] = {0, 1, 3}。判断目标串中当前的子串是否符合模式串的格式。若符合,输出;否则,目标串中的指针向后移动一位,继续检查。分原创 2012-10-16 09:47:12 · 1228 阅读 · 0 评论 -
找最大的N个数
题目:找最大的N个数时间限制1000 ms,内存限制256000 kB,代码长度限制8000 B。给定N个整数,找最大的前M个数(不一定有序),要求时间复杂度尽量低。先输入N和M (1 输入示例:5编程题-找最大的N个数354321 输出示例:543分析:1、如果所有的数据都可以装入内存,可以考虑使用快排中的分割函数Par原创 2012-10-22 00:19:50 · 1338 阅读 · 0 评论 -
打印前N个素数
题目:打印前N个素数,不需要考虑大数和溢出思路:从2开始,依次检测后续的每个数,若为素数,计数加1,直到计数到N。分析:问题复杂度的瓶颈在于判断一个数是否为素数。鉴于前面的素数已经找出,可以将所有找出的素数保存下来,在判断一个数x是否为素数时,只需判断该数x是否能整除[2,sqrt(x)]内的所有素数即可。/* * 打印前N个素数 * 不需要考虑大数和溢出的情况 * *原创 2012-10-16 08:30:11 · 1569 阅读 · 0 评论 -
时针和秒针重合次数
问题:24小时内时针和秒针重合几次分析:此题看似有点吓人,但若想到一点,就可秒杀此题。首先,要明白什么是时针和秒针重合,因为秒针走一秒是钟表中的一格,而时针可以看成是连续的转动,此处重合就要理解为在秒针停下的那一刻重合。想到这点,再看时针若想和秒针重合,必须走到一格时,秒针刚好走到这一格。已知一格有12分钟,时针走到每格时,必是整分钟,也即秒针必定在12点的位置。那么两者若想重合,只有在两者同原创 2012-10-22 09:02:04 · 1103 阅读 · 0 评论 -
N个结点可构成多少不同的二叉树
题目:树的形态时间限制1000 ms,内存限制256000 kB,代码长度限制8000 B每行输入一个自然数n,对应输出两行,每行一个数字,分别是:节点为n的二叉树有____种。如果每个节点可能有红、黑两种颜色,有____种。输入示例:12输出示例:1228思路:此题即为Catalan数的应用之一:N个结点可以构成多少不同的二叉树原创 2012-10-18 15:31:30 · 4333 阅读 · 0 评论 -
判断平衡二叉树
题目:编程题-平衡二叉树时间限制 1000 ms,内存限制 256000 kB,代码长度限制 8000 B判断一个二叉树是不是平衡说明:一棵二叉树任意一个节点的左右子树的深度差不大于1,即为平衡二叉树。给定一个有N个节点的二叉树,每个节点有一个序号表示,树有M条分支。每个分支用三个数字A B C表示,指A节点的左儿子为B,右儿子为C。如果B或C为-1,说明无该儿子。规定树根原创 2012-10-18 09:46:40 · 741 阅读 · 0 评论 -
有关复制构造函数的改错
题目:以下整型数组类的定义中每个函数有且只有一处错误,找出并改正class ArrayInt {public: ArrayInt(const int *pArray, int size) : m_nSize(size) { assert(size > 0); for (int i = 0; i < size; ++ i) m_pArray[i] = pArray[i];原创 2012-10-21 01:02:54 · 527 阅读 · 0 评论