笔试面试题
杰Tang_fighting
这个作者很懒,什么都没留下…
展开
-
实习题
数学题(前两问用数学方法实现)1. 找出这样的4位数:千位数等于4位数中0的个数,百位数等于4位数中1的个数,十位数等于4位数中2的个数,个位数等于4位数中3的个数。2. 改为7位数,最高位为0的个数,次高位为1的个数,依次类推,结果又如何?3. 编程实现一个函数,求出位数为n时的解,要求算法复杂度尽可能小。解:1.假设这个四位数是:千位原创 2014-06-20 22:16:03 · 790 阅读 · 0 评论 -
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i]
【问题】1、不用除法运算两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i]; 要求:1.不准用除法运算2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)3.满足时间复杂度O(n),空间复杂度O(1)。【分析】提示:题目要求原创 2014-08-15 17:23:33 · 1534 阅读 · 0 评论 -
给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序
【问题】找出反序的个数给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。 即:数组a[]; 对于i a[j],则称这是一个反序。 给定一个数组,要求写一个函数,计算出这个数组里所有反序的个数。【代码】#include #include #include int sumNum = 0;void merge(int *a原创 2014-08-15 21:56:21 · 1925 阅读 · 0 评论 -
换硬币问题
【问题】想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法。const int N = 100;int dimes[] = {1, 2, 5, 10};int arr[N+1] = {1};int coinExchange(int n) //动态规划{ int i, j; for (i = 0; i < sizeof(dimes)/sizeof(int);原创 2014-08-15 00:05:01 · 1255 阅读 · 0 评论 -
字符串编辑距离
【题目】给定一个源串和目标串,能够对源串进行如下操作:1. 在给定位置上插入一个字符2. 替换任意字符3. 删除任意字符写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000。【分析】参考自:点击打开链接此题常见的思路是动态规划,假如令dp[i][j] 表示源串S[0…i] 和目标串T[0…j] 的最短编原创 2014-08-26 11:08:16 · 1070 阅读 · 0 评论 -
单链表逆序
【问题】 单链表逆序【代码】#include #include #include typedef struct ListNode { int value; struct ListNode *next;}ListNode;typedef struct ListNode *List;List reverseList(List head) //列表逆序{ List原创 2014-09-04 21:07:36 · 658 阅读 · 0 评论 -
字符串所有组合
【问题】输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。【分析】对于字符串中每个字符,只有两种情况:一种就是出现在组合中,一种是不出现在组合中。【代码】void combination(char *str, char *res, int strPos, int resPos, int size){原创 2014-08-09 21:32:08 · 707 阅读 · 0 评论 -
地铁换乘
【问题】描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15原创 2014-09-04 12:31:36 · 970 阅读 · 0 评论 -
约瑟夫环
【问题】• 问题描述: 输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序比如: 输入的随机数列为:3,1,2,原创 2014-09-04 17:02:42 · 683 阅读 · 0 评论 -
操作系统任务调度问题
【问题】操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 ,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[]中的任务按照系统任务、用户任务依次存放到 system原创 2014-09-04 21:26:32 · 1264 阅读 · 0 评论 -
出现次数超过一半的数字
【问题】题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。【分析】解法1:先排序,排序后数组中间的那个元素就是要找的那个数字。时间复杂度O(n*logn)。解法2:既要缩小总的时间复杂度,那么可以用查找时间复杂度为O(1)的hash表,即以空间换时间。哈希表的键值(Key)为数组中的数字,值(Value)为该数字对应的次数。然后直接遍历整个hash表,原创 2014-08-22 20:32:06 · 663 阅读 · 0 评论 -
字符串去重复全排列算法
【题目描述】输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串abc、acb、bac、bca、cab 和 cba。【分析】从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。以对字符串abc进行全排列为例,我们可以这么原创 2014-08-09 18:04:29 · 3336 阅读 · 0 评论 -
2014届华为校园招聘机试题
一、题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);【原创 2014-09-04 15:29:36 · 611 阅读 · 0 评论 -
找出数组中唯一的重复元素
【问题】1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。 每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?【代码】#include #include #include /*根据异或法的计算方式,每两个相异的数执行异或运算之后,结果为1;每两个相同的数异或之后,结果为0,任何数与0异或,结果原创 2014-08-15 19:08:10 · 1073 阅读 · 0 评论