2018春招-今日头条笔试题5题(后附大佬答案-c++版)
1题目描述
在n个元素的数组中,找到差值为k的除重后的数字对
输入描述
第一行:n和k,n表示数字的个数,k表示差值
第二行:n个整数
输入样例
输入:
5 2
1 5 3 4 2
输出:
3
说明:
(1,3),(5,3),(4,2)
输入:
6 2
1 5 3 3 4 2
输出:
3
说明:
(1,3),(5,3),(4,2)
输入:
4 0
1 1 1 1
输出:
1
说明:
(1,1)
2题目描述
定义两个字符串变量:s和m,再定义两个操作:
第一种操作:m=s s=s+s
第二种操作:s=s+m
假设s和m,初始如下:
s='a' m=s
求最小步骤数,可以将s拼接到长度等于n
输入描述
一个整数n,表明我们需要得到s字符串长度,0<n<1000
输出描述
一个整数,表明总共操作次数
输入样例:
输入
6
输出
3
说明:
输入是6,表明我们需要得到s字符串长度为6,也就是s为最终为‘aaaaaa’,那么依次使用2次“第一种操作”和1次“第二种操作”就能达到目的,总共操作次数是3
输入
5
输出
4
说明:
输入是5,表明我们需要得到s字符串长度为5,也就是‘aaaaa’,那么直接使用4次“第二种操作”就能达到目的,总共操作次数是4
3题目描述
如下用‘6’拼出0123456789,其中用.. 隔开每个数字
输入描述
第一行为一个整数n
接下来n行,每行为一个表达式
表达式长度不超过100,1<=n<=100,表达式中仅仅包含'+'、' - '、'*'、' /'四中字符串,中间结果在[-2^63,2^63-1]范围内,最总结果在[0, 2^63-1]范围内
输入样例:
输入
2
6+6
6*6
输出
4题目描述
给定一个包含整数的集合a和一个集合b。定义magic操作,从一个集合中去除一个数,放到一个集合里,且操作过后每个集合的平均值都大于操作前。
注意以下两点:
①不可以把一个集合的元素都取空,这样就没有平均值了
②值为x的元素从集合b中取出放入集合a,但集合a中已经有值为x的元素,则a的平均值不变(因为集合元素不会重复),b的平均值可能会改变(因为x被取出)
问最多可以进行多少次magic操作?
输入描述
第一行为两个整数n,m
第二行n个整数,表示集合a中的元素
第三行m个集合,表示集合b中的元素
输出描述
输出一个整数,表示最多可以进行的操作次数
输入样例
输入
3 5
1 2 5
2 3 4 5 6
输出
2
说明
依存从b集合取出3、4元素放入集合
5题目描述
小T最近迷上了一款跳板游戏
已知空中有N个高度互不相同的跳板,小T刚开始在高度为0的地方,每次跳跃可以选择与自己当前高度绝对值差小于等于H的挑板,跳跃过后到达以跳板为轴的镜像位置,问小T在最多条K次的情况下能跳多高?(任意时刻,高度不能为负)
输入描述
第一行三个整数 N,K,H
以下N行,每行一个整数Ti,表示第i个跳板离地的高度
输出描述
一个整数,表示最高能跳到的高度
输入样例
输入
3 3 2
1
3
6
输出
8
说明
小T初始在高度0的地方
第一次跳跃只能选择高度为1的跳板,结束后到达高度为2的地方,计算方式:
高度1=初始高度+(跳板高度-初始高度)*2=0+(1-0)*2=2
第二次跳跃只能选择高度为3的跳板,结束后达到高度为4的地方,计算方式:
高度2=高度1+(跳板2高度-高度1)*2=2+(3-2)*2=4
第二次跳跃只能选择高度为6的跳板,结束后达到高度为8的地方,计算方式:
高度3=高度2+(跳板3高度-高度2)*2=4+(6-4)*2=8
大佬的答案(c++):https://www.nowcoder.com/discuss/70299?type=0&order=0&pos=7&page=1