本文主要收录了最近做过的2019年大厂秋招笔试题,包括华为、网易C++、网易雷火、Zoom、美团、小米等,其他暂未整理收录。不定期更新。
2019-07-31-华为-笔试
1.强迫症卖家
题目描述:
-
小明有10000台设备,以每台D价格卖出去。
-
不求数量,只求每台价格最接近D。
-
他只收整数钱。
解题思路:
剪枝。
代码:
1 | //by 张天宇 |
2019-08-03-网易C+±笔试
1.辗转相除
题目描述:
求解超大范围的最大公约数。a最大100000位,b最大18位。
代码:
1 | //by 黎 |
2.按位OR
题目描述:
- 输入M、N,包含两种情况,如果M为1代表将N插入到集合;M为2代表集合中是否存在一个和子集,满足子集中所有数字的Or值恰好为k。
- 输出YES或者NO,输入的数据均小于等于100000。
代码:
1 | // 寻找贡献位 |
3.优秀序列
题目描述:
-
定义一个优秀序列为:①S、T优秀,那么S+T优秀;②S如果优秀,各位取反去掉前导0也是优秀的。
-
给一个优秀的S,判断T是否优秀。
解题思路:
每次从T中剔除S或者S取反,如果剩下的也是优秀,那么T就是优秀。
代码:
1 | # 卢 |
4.参考:
http://m.nowcoder.com/discuss/216237
2019-08-04-网易雷火-笔试
1.模拟鼠标点击
题目描述:
- 每个窗口大小不一样,也可能超出屏幕。
- 按照打开顺序输入窗口坐标,左上角坐标及宽高,ID从1开始。
- 对于每次鼠标点击,输出窗口ID,出界了输出-1。
解题思路:
- 从最新的往后遍历,找到后放到最前面。前面所有端口优先级减一,然后按照优先级再排序。
代码:
1 | // by 黎 |
2.Stern-Brocot Tree
题目描述:
给定一种树,见文末,还有他的构造方法。求输入分子分母后该数的位置。
解题思路:
-
按照题目格式直接构造即可。由于数据量不大,可以考虑直接打表查询。
-
前两列作为基础线直接加进去,边界元素单独处理,后面使用递推式递推,注意1/2、1/1等特殊元素的位置,index*2就好。
踩坑:
-
分子和分母虽然说1000以内,但是也说明了整个树最多十三行,所以数据规模其实很小。
-
每一行的数据个数是2的n次方,没认真读题,第1000行时候数据量非常大。前几次提交的代码都内存爆掉了。
-
开始以为是法雷序列,但是第四行出现了大于4的元素5,因此不属于法雷序列,只能使用递推式构造。
代码:
1 | //by 张天宇 |
参考:
3.安保函数测试
题目描述:
根据输出结果实现函数。
解题思路:
使用给出的程序得出样例,进行拟合,得到函数,计算并输出。
代码:
1 | // 96% |
1 | # 测试对,未AC,可能是没写while |
2019-08-17-Zoom-笔试
1.移动距离
题目描述:
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2.3…。当排满行时,从下一行相邻的楼往反方向排号。比如:当小区排号宽度为6时,开始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)。
代码:
1 |
|
2.算法Frequency
题目描述:
编写一个算法frequency,统计一个输入字符串中各个不同字符出现的频度,按出现频度由高到低的顺序组成新的
字符串并输出。
输入字符串的长度最长: 1024
输入描述:程序输入为一个字符串
输出描述:输出也为一个字符串
代码:
1 |
|
2019-08-22-美团-笔试
1.美团骑手包裹区间分组
题目描述:
将字符串切割分组,使得每个组内的字母不在其他组内出现,返回每个组的长度。
解题思路:
统计每个字母第一次出现的下标和最后一次出现的下标的,就可以得到每个字母的区间范围,然后合并这些区间范围。
代码:
1 | def part(S): |
2.最小唯一前缀
题目描述:
给定一些字符串,逗号隔开,寻找能够唯一确定该字符串的最小前缀。
解题思路:
- 对所有单词进行排序,使得长得相近的单词靠在一起。
- 取出其中的一个单词,获取左右相邻的两个单词与本身的公共前缀。
- 两个公共前缀,最长的那个公共前缀的长度加上 1,就是本身单词的,最短唯一前缀。
代码:
1 | import os |
2019-09-07-小米-笔试
1.二叉树
题目描述:
给出一个使用括号嵌套表示的二叉树,如1(2(3,4(,5)),6(7,)),输出该二叉树的中序遍历顺序。
解题思路:
建立二叉树,并中序输出。
代码:
1 |
|