2015华为机试
专栏中的博客均为2015年华为招聘机试题,笔者在总结过程中控制难易程度,每一段代码都亲自测试并通过华为在线OJ测试。
每一个博客分:题目描述、函数接口、解题思路、代码展示。
开设专栏的目的:一、自己在求职过程中归纳总结。二、大家一起学习交流。
zzc8265020
这个作者很懒,什么都没留下…
展开
-
2015华为机试—— 计算二进制数的0的个数
描述: 输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。解题思路: 对于给定的数n,使用位运算:n=n&(n-1)可计算出对应二进制中1的个数,为count1。将input=n,input=input>>1逐个获取input中1的个数,为count2,如果input&1==1,则此时对应位上为0,记数t加1操作,当count1=count2时,循环终止,此时可获得t,即为0个个数,具体实现看下面代码。原创 2015-07-17 10:41:07 · 1010 阅读 · 0 评论 -
2015华为机试——最大公约数
描述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 初级 运行时间限制: 无限制内存限制: 无限制阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和2的最大公约数 样例输入: 2 3 样例输出:1原创 2015-07-17 10:39:23 · 806 阅读 · 0 评论 -
2015华为机试——合唱队
描述: 计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得Ti<T2<......<Ti-1<Ti>Ti+1>......>TK。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。原创 2015-07-17 10:34:58 · 936 阅读 · 0 评论 -
2015华为机试——最高分是多少
题目描述: 老师想知道从某某同学到某某同学当中,分数最高的是多少。现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 题目类别: 排序 难度: 初级 运行时间限制: 无限制内存限制: 无限制阶段: 入职前练习 输入: 输入包含多组测试数据。每组输入第一行是两个正整数N和M(0<N<=30000,0<M<5000),分表代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。接原创 2015-07-17 10:27:29 · 2175 阅读 · 0 评论 -
2015华为机试—— 字符变换
题目描述: 输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母,若原始大写字母为V~Z, 则转换为对应小写字母的值减21。其他字符不变,输出转换后的字符串。 例如,对于字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。输入:字符串输出:转换后的字符串样例输入:Axs3mWss样例输出:fxs3mbss原创 2015-07-14 10:23:50 · 799 阅读 · 0 评论 -
2015华为机试——尼科彻斯定理
题目描述:验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。m属于[1,100],超出范围则报错。例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19解题思路:不难发现展开式从(n*n - n + 1)开始,步进2显示,共显示n个数。原创 2015-07-14 10:21:01 · 747 阅读 · 0 评论 -
2015华为机试——找零钱
题目描述: 我们知道人民币有1、2、5、10、20、50、100这几种面值。现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。原创 2015-07-14 10:17:32 · 1282 阅读 · 0 评论 -
2015华为机试——整数分割
解题思路: 对于奇数 n = 2k+1, 它的拆分的第一项一定是1, 考虑去掉这个1,其实就一一对应于2k的拆分,因此f(2k+1) = f(2k)。对于偶数n = 2k: 考虑有1和没有1的拆分。有1的拆分,与(2k-1)的拆分一一对应,与上面奇数的情况理由相同:没有1的拆分,将每项除以2,正好一一对应于k的所有拆分,因此f(2k) = f(2k-1) + f(k)。最终结果只要求除以十亿的余数,在int的表示范围内,因此也不需要大数运算。注意余数的性质:(a+b)%m = (a%m+b%m)%m原创 2015-07-14 10:13:53 · 733 阅读 · 0 评论 -
2015华为机试——数字基root
题目描述: 求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复;输入:输入任意一个或多个整数输出:输出各位数字之和,直到和为个位数为止(输入异常,则返回-1),多行,每行对应一个输入数据的结果。样例输入: 25 865样例输出: 7 1解题思路:对于给定的数n,使用n%10来分离n获得各个位上的数,然后进行相加,如果和大于10,继续分离,继续求和,直到和小于10.原创 2015-07-14 10:08:46 · 746 阅读 · 1 评论 -
2015华为机试——报数
题目描述: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的那位是原来第几号。解题思路: 用list存储姓名,看谁剩到最后一个.在list长度遍历一次,如果是3的倍数则退出,同时记录队尾报数,然后再以现在的list报数,以此类推。原创 2015-07-13 10:05:06 · 895 阅读 · 0 评论 -
2015华为机试——计算整数的位数
题目描述: 输入一个五位以内(包括5位)的正整数,(1)判断它是一个几位数;(2)逆序输出其各位数字。 输入:多组数据,每组一行 输出:对应一行输出 样例输入:56439 样例输出:5 93465解题思路:使用StringBuffer的reverse方法即可。原创 2015-07-13 10:00:30 · 802 阅读 · 1 评论 -
2015华为机试—— Redraiment的遭遇
Redraiment的老家住在工业区,日耗电量非常大。是政府的眼中钉肉中刺,但又没办法,这里头住的可都是纳税大户呀。 今年7月,又传来了不幸的消息,政府要在7、8月对该区进行拉闸限电。但迫于压力,限电制度规则不会太抠门,政府决定从7月1日停电,然后隔一天到7月3日再停电,再隔两天到7月6日停电,一次下去,每次都比上一次晚一天。 Redraiment可是软件专业的学生,怎么离得开计算机。如果停电,就“英雄无用武之地”了。呵呵。 所以他开始盘算起自己回家的日子了,他想知道自己到家后到底要经历多少天倒霉的停电。你原创 2015-07-13 09:54:49 · 774 阅读 · 1 评论 -
2015华为机试——计算两个正整数的最大公约数和最小公倍数
设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除r2,……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个为被除数余数的除数就是原创 2015-07-13 09:49:58 · 846 阅读 · 0 评论 -
2015华为机试——小明的筷子
题目描述:小明是个马大哈,某天他到超市买了若干双筷子(n<20)筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根请你用程序帮他找出是漏掉的筷子是多长的。输入: 剩下的筷子数组,如:1, 2, 3, 2, 1, 3, 2返回值:漏掉的筷子长度,如上述输入返回:2(当输入的筷子数据异常时返回-1,如:找不到漏掉的筷子)解题思路:使用HashMap对筷子的种类与数量进行键值对匹配存储,当出现重复筷子时,对应的筷子数量+1,然后遍历一次HashMap,获取筷子的数量,原创 2015-07-13 09:44:30 · 1330 阅读 · 0 评论 -
2015华为机试——求n!尾巴上含有0的个数
解题思路: 这题之前在leetcode中做过,如果先对n进行阶乘运算,然后%10求0的个数。但是n!很有可能溢出,所以需要找到它的等效方法,0的个数即为10的个数,即为5于2的个数,显然在n!中,2的个数要大于5的个数,因此只要算出n范围内有多少个5就OK原创 2015-07-09 10:10:10 · 1521 阅读 · 0 评论 -
2015华为机试—— 有效数字
题目背景判断字符串是否是有效数字,是则返回0,不是则返回-1 接口int NumType(String s) 举例例如:输入的字符串是123.456,返回0 输入123a,返回-1 输入123.456d,返回0解题思路:直接使用double类型的静态方法原创 2015-07-09 10:03:10 · 712 阅读 · 1 评论 -
2015华为机试—— 输入整型数组和排序标识,对其元素按照升序或降序进行排序
接口说明原型:void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag);输入参数: Integer[] pIntegerArray:整型数组int iSortFlag:排序标识:0表示按升序,1表示按降序输出参数: 无返回值: void原创 2015-07-09 10:00:46 · 1219 阅读 · 0 评论 -
2015华为机试—— 整型数排序
需求:1、对输入的整型数序列A,完成升序排列,将结果序列从B中输出。以整数值大小为关键字排序,即小数在前,大数在后。2、当序列中存在多个同样大小的数时,输出序列中仅保留一个。原创 2015-07-09 09:55:39 · 1116 阅读 · 1 评论 -
2015华为机试——高次方数的尾数
解题思路: 思路一:先求M的N次方,然后M^N%1000求最后三位数,但是M的N次方很有可能会溢出,导致输出结果异常或错误。 思路二:思路一不行的话,我们得找到他对应的等效方法,M每乘M就对1000求余,其最后三位数是等效的。原创 2015-07-09 09:49:40 · 968 阅读 · 0 评论 -
2015华为机试—— 称重小白鼠
题目描述: N只小白鼠,每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色由枚举值MOUSE_COLOR定义。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示,请按照小白鼠的重量从小到大的顺序输出他们帽子的颜色,重量相同的小白鼠,排序后位置不变。解题思路:直接对小鼠体重进行排序,然后对排序后的小鼠,获取帽子颜色属性即可。原创 2015-07-09 09:34:21 · 1309 阅读 · 0 评论